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'

posted on 2021-09-12 16:58  杨小杨~  阅读(59)  评论(0)    收藏  举报

导航