Linux CLI 如何在檔案前面增加內容

Linux 於 Bash shell (CLI) 要怎麼將檔案第一行(檔頭、檔案開頭)或者指定行數增加內容?

註:在檔案最後一行加入內容,只要 echo 'last content' >> filename.txt 即可。

Linux CLI 如何在檔案前面增加內容

於 CLI 要對大量檔案某些行數增加內容,可以使用 sed 或 perl 來達成。

Perl 指定行數寫入內容的範例

  • perl -i -pe 's/^/"column1","column2","column3"\n/ if($.==1)' test.csv # 將此內容寫入第一行
  • perl -i -pe 's/^/"column1","column2","column3"\n/ if($.==3)' test.csv # 將此內容寫入第三行

sed 指定行數寫入內容的範例

sed 下述內容 -i 的部份,建議開始測試都先用 -e,直接將檔案內容印出來,看看是不是自己要的。(-i 就會直接寫入檔案內容)

  • sed -e "1icontent" test.csv # 1i 就是從第一行開始 insert,test.csv 要有內容,不能是空的
  • sed -e "$acontent" test.csv # $a 就是從最後一行開始 append

sed 指定行數寫入內容的範例

  • sed -i '1i"column1","column2","column3"' test.csv # 檔案開頭寫入內容
  • sed -i '3i"column1","column2","column3"' test.csv # 第三行寫入內容

sed 刪除某行、取代某些字元的範例

  • -e 會直接輸出執行後的結果,-i 是直接取代寫入檔案
  • sed -e '1d' test.log # 刪除第一行
  • sed -e '10,$d' test.log # 第10行刪除到最後
  • sed -e 's/col/COL/g' test.log # 把檔案的所有 col 都換成 COL
  • sed -e '1d' -e 's/col/COL/g' siege.log # 刪除第一行 並 把檔案的 col 都換成 COL

sed 搭配 find、read 對目錄內所有檔案增加內容

  • 對此目錄內的所有 txt 第一行增加 "column1","column2","column3" 的內容
    find ./ -name '.txt' | while read -r file; do
        sed -i '1i"column1","column2","column3"' $file;
    done

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料