sed命令
-n: 对特定行编辑
-e: 可以指定多个script脚本
-f: 输入sed脚本,脚本中写着编辑命令
-r: 支持使用扩展正则表达式
-i: 直接编辑源文件
定界-单地址
n: sed -n '1p' /etc/passwd 仅输出第一行
/pattern/: 匹配指定模式的行,这里的pattern不是扩展正则表达式,如果使用扩展正则表达式,需要加上-r
sed -n '/sbin/p' /etc/passwd 输出能够匹配上sbin的行
定界-范围
n,m: 定位从n行开始至m行(都是闭区间)
n,+k: 定位从第n行开始,包括往后的k行
n,/pattern/: 定位从第n行开始至指定模式匹配到的那一行
/pattern1/,/pattern2/: 定位从pattern1开始,到pattern2模式匹配的范围
编辑操作
d: 删除整行, sed '/sbin/d' passwd
p: 打印匹配到的行,p和-n配合使用。
a: 在匹配的行后面增加文本,使用\n支持多行追加。sed '1a aaaaaaa\nbbbbbb' passwd.在第一行后面追加两行
i: 在匹配的行前面增加文本,sed '2i hhahhaha\nbbbbbbbb' passwd
c: 替换匹配行为指定的文本,sed '/root/c wwwwwwwwwww' passwd 把匹配到的行替换为wwwwww
w: 保存匹配内容到指定的位置,sed -n '/[#]/w /opt/a.txt' /etc/fstab
r: 读取指定文件的内容插入到匹配的行后面,进行文件合并。sed '2r /opt/passwd' /opt/a.txt
s///: 条件替换, g(全局替换),p(打印替换成功的行)
sed 替換所有的換行符
echo -e "hello\nworld" | sed ':label;N;s/\n//g;b label'
sed 替換所有的空格
echo "hello world"|sed 's/[[:space:]]//g'
浙公网安备 33010602011771号