sed命令的常用选项
-e :表示用指定命令来处理输入的文本文件,只有一个操作命令时可省略,一般在执行多个操作命令使用
-f :表示用指定的脚本文件来处理输入的文本文件。
-h :显示帮助。
-i 直接修改目标文本文件,立即生效
-n 取消默认输出(打印时候要添加,打印两行变一行)
sed命令的操作符
s:替换,替换指定字符
d:删除,删除选定的行。
a:增加,在当前行下面增加一行指定内容。
i:插入,在选定行上面插入一行指定内容。
c:替换,将选定行替换为指定内容。
y:字符转换,转换前后的字符长度必须相同。
p:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以 ASCII 码输出。其通常与“-n”选项一起使用。
=:打印行号。
l(小写L):打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t)
r:高级正则表达式
查:
sed -n '2p' (只打印第2行)
sed -n '=;p' (打印行号和内容)
sed -n '1,3p' (打印1-3行)
sed -n '$p' (打印最后一行)
sed -n '1p;3p' (打印第1行和第3行)或者 sed -n -e '1p' -e '3p'
sed -n 'n;p' (打印偶数行)
sed -n 'p;n' (打印奇数行)
sed -n '/0/p' (打印含0的所有行)
sed -n '/^root/p' (打印以root开头的所有行)
sed -n '/bash$/p' (打印以bash结尾的所有行)
删:
sed 'd' (删除所有)
sed -i 'd' (删除文件内容保留文件) 或者 cat /dev/null > 文件
sed -n '3d;p' (删除第三行,其他打印出来)
sed -n '3-5d;p' (删除3-5行,其他打印出来)
sed -n '3-5!d;p' (只打印出3-5行,其他删除)
sed '/one/d' (删除带one的行)
sed '/one/,/six/d' (删除带one的行一直删到带six的行)
sed '^$' (删除空行)或者grep -v '^$' 或者cat 文件 | tr -s '\n'
改:
sed -n 's/root/test/2p' (第二行的所有root替换成test并打印出来)
sed -n 's/root/test/gp' (所有的root替换成test并打印出)
sed -n '/^root/,s/^/#/p' (以root为开头的注释掉)
sed -n 's/A-Z/\/$/g' (所有大写换成小写)
sed -n 's/a-z/\/u&/g' (所有小写换成大写)
sed '/root/c test' (带有root的这行全部替换)
sed 'y/root/qqqq/' (替换root为qqqq,这里注意只可以替换同长度的)
增:
sed '/three/a 123' 在three下增加123
sed '/three/i 123' 在three上增加123
sed '$r123.txt' 456.txt 把123.txt的内容插入到456.txt里
sed里面字符串和字符的位置交换:
echo test1yht | sed -r 's/(test1)(yht)/\2\1/'
结果为:yhttest1