sed在指定行插入新行

2021-08-26 19:37:15 字數 853 閱讀 4394

前些天備份使用mysqldump備份出的資料檔案(insert形式),裡面的內容沒有use db_name這個語句,所以如果在指令碼中執行,那麼會提示no database selected,所以就想在裡面新增乙個use db_name的語句。但是因為資料檔案太大,如果直接vim開啟恐怕不行。所以想到sed,然後上網找了一下sed在指定行插入的命令,然而需要注意的是,這些命令雖然可以直接定位到行,但最終如果要檔案內容被更新掉還是要花費一定的時間的,但是這樣會比直接vim開啟檔案然後插入一行效率更高。

下面貼出具體的命令:

1.在指定行前插入一行

sed '2 ittt' -i a.txt # 在第2行前插入ttt,並且將結果更新到a.txt(如果不想將插入真正更新到檔案,去掉後面的-i選項就可以)

2.在指定行後插入一行

sed '2 attt' -i a.txt #在第2行後插入ttt,並且將結果更新到a.txt(如果不想更新原檔案,去掉-i)

3.在指定的多行前面插入

sed 'n,m ittt' -i a.txt #看得懂了吧

4.在指定的多行後面插入

sed 'n,m attt' -i a.txt #看得懂了吧

sed提供了功能太強大了,以後還需要好好學習它,好記性不如爛筆頭哈~~

update 1:

又學習了一下sed常用命令,這篇舉的例子不錯

發現sed真的是太靈活了,另外上面舉的例子,-i表示更新到原檔案,寫在前面後後面都是一樣的效果。 上面都是在指定行插入新行,在匹配的行前面(後面)插入新行的寫法:sed '/test/i\ add a new line' -i a.txt(同理,sed '/test/a\ a new line' -i a.txt則是插入到匹配的行後面)

sed刪除指定行

待處理文字如1 8行文字 cata 1 2345678 sed刪除連續指定行 如1 4行 sed 1,4d a 5678 sed刪除不連續指定行 如第一行和第三行 sed e 1d e 3d a245678 乙個例子 我有乙個list檔案如下 cat list unknown other 2 檔名,...

sed 刪除某一行 sed刪除指定行

待處理文字如1 8行文字 cata1 sed刪除連續指定行 如1 4行 sed 1,4d a5 sed刪除不連續指定行 如第一行和第三行 sed e 1d e 3d a2 乙個例子 我有乙個list檔案如下 cat list unknown other 2 檔名,我要從檔案裡抓取一些資訊,下同,發現...

SHELL 在指定行的前 後插入指定內容

如果知道行號可以用下面的方法 sed i 88 r b.file a.file 在a.txt的第88行插入檔案b.txt awk 1 nr 88 a.file a.file 如果不知道行號,可以用正則匹配 sed i regex r b.txt a.txt regex是正規表示式 awk targe...