讷于言而敏于行 ——《论语·里仁》
sed命令是一个用在对输入流进行处理的文本处理工具。掌握它能够更好地帮助管理Linux和处理日志文件。
用法:
sed [option] ‘command’ 输入流
常用option:
-n:安静模式,一般如果没有加-n选项,输入流中所有的行将会被列出,加入-n后只会列出‘command’处理过的行。一般与 command中p命令连用。
-r:默认sed只是支持一般的正则表达式,如果加上-r参数表示让sed支持扩展的正则表达式。
-i:插入,如果输入流是一个文件流,则直接在文件中修改内容而不是输出到屏幕。(慎用)
常用 ‘command’:
a(i):add(insert),在目标行数后一行(前一行)插入字符串。
d:delete,删除目标行。
p:print,打印目标行。
s:substitute ,用新的字符串替换 目标字符串。通常这个 s 的动作可以搭配正则表达式,且与vim中的替换类似。1,20s/old/new/g
c :替换目标行
例子:
删除:
# sed ‘1d‘ #删除第一行
# sed ‘$d‘ #删除最后一行
# sed ‘1,10d‘ #删除第一行到第十行
# sed ‘2,$d‘ #删除第二行到最后一行
显示:
. # sed -n ‘1p‘ #显示第一行
# sed -n ‘$p‘ #显示最后一行
# sed -n ‘1,2p‘ #显示第一行到第二行
# sed -n ‘2,$p‘ #显示第二行到最后一行
# sed –n ‘/dbird/p‘ #打印所有包含dbird 的行
# sed –n ‘/\$/p‘ #打印所有包含$符号的行
插入:
#sed ‘1,3a drink tea #在1到3行后面插入drink tea,则drink tea分别在第2,4,6行
#sed 1,3i drink tea #在1到3行之前插入drink tea,则drink tea分别在第1,3,5行
行替换:
#sed ‘1,2c Hi‘ #将第一到二行替换为Hi
字符串替换:
格式:sed ‘s/要替换的字符串/新的字符串/g‘ (要替换的字符串可以用正则表达式)
#sed ‘s/dbird/vbird/g‘ #替换dbird为vbird
#sed ‘s/dbird//g‘ #删除dbird
#sed -i ‘/匹配字符串/d‘ filename #直接删除文件filename中的匹配的字符串