Linux 使用 SED 對檔案 最前、最後 增加一行資料

Linux 想要在檔案的最前面和最後面增加一行或多行的資料,可以怎麼做呢?

在檔案最後增加資料很簡單:

  • echo 'last line data' >> filename # 單一檔案
  • for f in .txt ; do echo 'last line data' >> $f; done # 目錄下所有 txt 檔 最後都增加一行

Linux 使用 SED 對檔案 最前、最後 增加一行資料

在此想用 sed 做完這些事情

sed 要檔案第一行增加內容

  • sed -i '1i' filename
    • 範例:
    • sed -i '1ifirst line data\n' filename
    • sed -i '1ifirst line data\n' * # 多檔案

sed 要檔案最後一行增加內容

  • sed -i '$a' filename
    • 範例:
    • sed -i '$alast line data\n' filename
    • sed -i '$alast line data\n' * # 多檔案

若想要做 MySQL Transaction,需要在檔案前後加點資料:

對檔案前面增加

  • SET autocommit=0;
  • START TRANSACTION;

再對檔案最後面增加

  • COMMIT;
  • SET autocommit=1;

作法如下:

  1. sed -i '1iSET autocommit=0;\nSTART TRANSACTION;' .sql
  2. sed -i '$aCOMMIT;\nSET autocommit=1;' .sql

相關網頁

作者: Tsung

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

在〈Linux 使用 SED 對檔案 最前、最後 增加一行資料〉中有 2 則留言

  1. sed -i 在使用時還是會有 tmp file 產生,所以如果只是要在最前况最尾加入內容,我覺得直接創一個新檔案再刪掉舊檔案就好:

    cat <new.sql
    SET autocommit=0;
    START TRANSACTION;
    $(cat .sql)
    COMMIT;
    SET autocommit=1;
    EOF

    mv new.sql .sql

發表迴響

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