sed
sed是一种流式编辑器,可以实现查找输出,替换 ,删除等操作
查找输出
sed -n '/root/' p test.txt 查找输出包含root的字符串
sed -n '/r.t/' p test.txt 查找查找输出中间包含一个任意单字符的rt组合的字符串
sed -n '/r*t/' p test.txt 查找输出中间包含任意个任意字符的rt组合的字符串
sed -n '/r\+t/' p test.txt 查找输出重复1次以上的r和t组合的字符串,用法类似grep -E
sed -nr '/r+t/' p test.txt 查找输出重复1次以上的r和t组合的字符串,用法类似grep -E
sed -nr '/o{2}/' p test.txt 查找输出包含重复2次o的字符串
sed -nr '/root|bus|nologin/' p test.txt 查找输出包含root或bus或nologin的字符串
sed -n '2' p test.txt 查找输出第2行
sed -n '2,5' p test.txt 查找输出第2行到第5行
sed -n '25,$' p test.txt 查找输出第25行到尾行
sed -n '1,$' p test.txt 查找输出全部行
sed -n '/^1/'p test.txt 查找输出以1开头的行
sed -n 'in$'p test.txt 查找输出以in结尾的行
sed -n '/r..o/'p test.txt 查找输出中间包含两个任意单字符的ro组合的字符串
sed -n 'oo*'p test.txt 查找输出包含重复出现任意次oo的字符串
sed -e '1'p -e '/root/'p -n test.txt 查找输出第1行,再次查找输出包含root的字符串
sed -n '/bus/'Ip test.txt 不分大小写,查找输出包含bus的字符串
删除
sed '1'd test.txt 删除第1行
sed '1,30'd test.txt 删除1-30行
sed -i '1,30'd test.txt 直接删除1-30行
sed '/root/'d test.txt 删除包括root的行
sed -i '/root/'d test.txt 直接删除包括root的行
查找替换
sed '1,2s/ot/to/g' test.txt 查找1-2行,全局替换ot为to
sed -r '1,10s/ro+/r/g' test.txt 查找1-10行,全局替换重复1次以上ro组合字符为r
sed 's#ot#to#g' test.txt 全局替换ot为to
sed 's/[0-9]/ /g' test.txt 全局替换符合集合条件的字符串为空
sed ’s/[a-zA-Z]/ /g’ test.txt 全局替换符合集合条件的字符串为空
sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' test.txt 互换以:号分割的首尾两段
sed -r 's/(rot)(.*)(bash)/\3\2\1/' test.txt 互换包含rot的首段和包含bash的尾段
sed -r ‘s/(^.*)/aa:&/ ' 在以任意单字符开头的行前面加上aa: (^.*)表示整行,
&
表示()里的内容
sed -i 's/ot/to/g' test.txt 全局编辑替换ot为to
sed 's/^.*$/123&/' test.txt 在所以行前添加123