1.簡介
sed命令不會修改文件的內容,除非使用shell的I/O重定向,默認所有的輸出行都輸出到標準輸出中。
2.過濾(定址)
可以使用過濾條件確定需要編輯的行,數字、正則、前兩者結合,如果沒有過濾,則默認輸出所有行。
a.地址是一個數字則表示行號,是"$"符號則表示最後一行:
$sed -n '3p' a.txt
只輸出第三行
b.可以指定行號範圍:
$sed '100,200p' a.txt
輸出第100行到第200行
c.地址是以","分割,可以是數字、正則、兩者結合的表達式
#刪除第2到第5行 sed '2,5d' a.txt #刪除包含"john"的行到第10行 sed '/john/,10d' a.txt #刪除包含"john"的行到包含"lili"的行 sed '/john/,/lili/' a.txt
3.命令與選項
a\命令:在當前行後添加一行或多行,多行時除最後一行需要用\續行
#在文件learn.txt中的含有cat的行後插入內容爲aaa、bbb的兩行 sed '/cat/a\ aaa\ bbb' learn.txt
c\命令:用該命令後的新文本替換當前行的文本。多行時除最後一行要用\續行
#用aaa bbb替換含有cat的行 sed '/cat/c\ aaa\ bbb' learn.txt
i\命令:在當前行之前插入新文本,新文本爲多行時除最後一行需要用\續行
#在含有cat的行之前插入aaaa bbbb sed '/cat/i\ aaaa\ bbbb' learn.txt
d命令:刪除行
#刪除最後一行 sed '$d' learn.txt #刪除含有cat的行 sed '/cat/d' learn.txt
p命令:顯示內容
#默認打印所有行,並將含有cat的行另外打印一遍 sed '/cat/p' learn.txt #加入-n後取消默認打印,p命令只把含有cat的行打印一遍 sed -n '/cat/p' learn.txt
s命令:文本替換
#在含有cat的行中將所有cat替換爲dog sed 's/cat/dog/g' learn.txt