Shell三剑客之sed命令
关于sed命令
这是一个非交互式的工具,即非交互式编辑器
一行一行匹配与处理,即根据行进行匹配后处理
默认不改变文件,只输出处理的内容
使用方式
- sed [选项] [匹配和动作] <文件名>
#举例:
sed '1ihello' test.txt #在第1行插入hello
#1表示第1行
#i表示插入
#hello表示插入的字符串
#test.txt表示处理的文本文件
#这里不改变文件内容,只将处理的结果输出
选项
-n #只输出处理行
-i #直接修改,而不是输出
匹配
2,$ #2到最后一行
/2/ #匹配正则表达式,包含2的行
/^2/ #匹配开头为2的行
sed特殊正则
sed里有些正则和普通的正则语法不太一样,下面列出一些sed特殊语法的正则。
\+ #匹配一次或多次
\? #匹配零次或一次
\| #或语法
动作
d #删除行
sed '1,3d' test.xx #删除1到3行
a #新增行
sed '1a hello' test.txt #第1行后新增hello
i #插入行
sed '1i hello' test.txt #在第1行插入hello
c #替换行
sed '1c hello' test.txt #替换匹配行为hello
sed '/^SELINUX=/cSELINUX=disabled' test.txt
p #输出行(与-n选项配合)
sed -n '2p' test.txt #输出第2行
s #替换匹配字符串
sed 's/aa/AA/' test.txt #替换每一行遇到的第一个aa为AA
sed '2s/2/x/' test.txt #替换第2行的第一个2为x
sed '/^[0-9]/s/aa/AA/g' test.txt #替换以数字开头的行的所有aa为AA
g #一行里所有都匹配
sed 's/aa/AA/g' test.txt #替换一行里所有的aa为AA