天天看點

sed

整理部分sed用法:

[root@localhost ling]# sed --version

gnu sed version 4.1.2

原始文檔sed.txt

hello

ok

aaa

ccc

a\    ###追加文本

預設情況下,對于添加一行a\後面的“\”符号可以自動換行,如果需要添加多行,則在添加第一行内容後用\n

例:追加單行

[root@localhost ling]# sed '/ccc/a\hhh' sed.txt

hhh

例:追加多行

[root@localhost ling]# sed '/ccc/a\hhh\nbbb\nvvv' sed.txt

bbb

vvv

i\    ###插入文本

在指定的行或者模式比對的行前面插入

例:指定行前插入多行

[root@localhost ling]# sed '4i\ttt\nmmm' sed.txt

ttt

mmm

例:模式比對的行前插入多行

[root@localhost ling]# sed '/ccc/i\ttt\nmmm' sed.txt

c\    ####修改文本

用輸入的字元串替代指定行或者模式比對行

例:指定行修改文本

[root@localhost ling]# sed '4c\vvvvvvvvvv' sed.txt

vvvvvvvvvv

例:模式比對行修改文本

[root@localhost ling]# sed '/cc/c\vvvvvvvvvv' sed.txt

替換修改文本

源文檔:c

ac456

ac492169

ac9967

ac88345

例:在每行後添加字元passed

[root@localhost ling]# sed 's/[0-9][0-9]*/& passed/' c

ac456 passed

ac492169 passed

ac9967 passed

ac88345 passed

例:在每行前添加字元串passed

[root@localhost ling]# sed 's/ac/passed &/' c

passed ac456

passed ac492169

passed ac9967

passed ac88345

從另一個檔案内讀取檔案 r

百度面試題:

a檔案:

b檔案:

111

222

333

将b檔案内容插入a檔案的第2行之後,最後a檔案的内容如下:

解決:[root@localhost ling]# sed -i '2r b' a