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;
作法如下:
- sed -i '1iSET autocommit=0;\nSTART TRANSACTION;' .sql
- sed -i '$aCOMMIT;\nSET autocommit=1;' .sql
sed -i 在使用時還是會有 tmp file 產生,所以如果只是要在最前况最尾加入內容,我覺得直接創一個新檔案再刪掉舊檔案就好:
cat <new.sql
SET autocommit=0;
START TRANSACTION;
$(cat .sql)
COMMIT;
SET autocommit=1;
EOF
mv new.sql .sql
感謝建議~~
我這個是在有幾百個 SQL 檔案要直接加上去時使用的 🙂