搜索

已整理-sed文本处理命令 - tengq - 博客园


发布时间: 2022-11-24 18:03:02    浏览次数:9 次

目录:
  1、sed使用方法
  2、查-查看指令-p
  3、增-添加内容
  4、删-删除指令-d
  5、改-替换指令
  6、写入文件

 

1、sed使用方法与功能
sed 流式编辑器,可以非交互式修改文本,逐行操作:增删改查

sed 是一种新型的,非交互式的编辑器;它能执行与编辑器vi和ex相同的编辑任务;

sed编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出;
sed编辑器没有破坏性,它不会修改文件,除非使用shell重定向来保存输出结果;默认情况下,所有的输出行都被打印到屏幕上;
sed编辑器逐行处理文件(或输入) ,并将输出结果发送到屏幕;sed的命令就是在 vi和ed/ex编辑器中见到的那些;
sed把当前正在处理的行保存在一个临时缓存区中,这个缓存区称为模式空间或临时缓冲;
sed处理完模式空间中的行后(即在该行上执行sed命令后),就把改行发送到屏幕上(除非之前有命令删除这一行或取消打印操作);
sed每处理完输入文件的最后一行后,sed 便结束运行;sed把每一行都存在临时缓存区中,对这个副本进行编辑,所以不会修改或破坏源文件;

 

 

前置命令|sed 选项 (定址符) 指令

sed |选项 (定址符)指令 文本        #用得比较多,用来修改文本文件

 

常用选项:

-n       屏蔽默认输出,只打打匹配过的内容 -r       支持扩展正则 -i        写入文件

 

2、查-查看指令-p
p 输出指定内容: # sed 'p' txt, 每行会输出2次,结合-n 就只输出一行:

# sed -n 'p' txt # df -h|sed -n '1p'       #输出第1行 # df -h|sed -n '1,2p'         #输出第1行-第2行 # df -h|sed -n '1,+2p'        #输出第1行,再多输出2行,也就是1-3行 # df -h|sed -n '1p;4p'     #输出第1行和第4行 # df -h|sed -n '1~2p'          #输出第1行和后面的奇数行,如:35、7行等,隔行输出 # df -h|sed -n '1~1p'        #输出第1行和后面的偶数行,如:24、6行等 # sed -n '$=' /etc/passwd     #显示最后1行行号 # sed -n '=' /etc/passwd        #显示每行的行号

 

3、增-添加内容
a      #行后追加
i      #行前添加
c      #直接替换行

# sed '1,2a 8888' passwd       #在第1行和第2行后面添加8888 # sed '1,2i 8888' passwd       #在第1行和第2行前面添加8888 # sed '/AAAA/i 8888' passwd     #在有AAAA字符串的行前面添加8888 # sed '/AAAA/c 8888' passwd        #把有AAAA字符串的行,整行替换成8888

 

4、删-删除指令-d
d

# df -h |sed '1d'          #删除第1行, 不要加-n,其它操作参考查看指令 # df -h |sed '2d'       #删除第2行 # df -h |sed '2,5d'         #删除第2行到第5行

 

扩展正则:

# sed -r '/bash|nologin/d' passwd    #sed 默认不支持扩展正则,后面得加-r 选项才可以;

 

5、改-替换指令
s

# sed 's/root/haha/' passwd         #替换,root字符串替换成haha,只匹配1次,每行只替换1次 # sed 's/root/haha/g' passwd        #替换,root字符串替换成haha,替换每行所有匹配的字符串 # sed 's/root/haha/2' passwd         #替换,root字符串替换成haha,但只替换第2次匹配的字符串 # sed '3s/2017/2022/1' passwd       #替换第3行,把2017字符串替换成2022,且只替换1次 # sed 's#/bin/bash#/bin/tash#' /etc/passwd     #sed支持#代替/书写方式,防止混淆 # sed -n '2s/2017/3333/p' passwd       #替换第2行的2017替换成3333,并打印出来更换出来的内容 # sed -n '2s/^/#/p' passwd             #在第2行的前面添加注释# # sed -n '2s/^#an/an/p' passwd           #在第2行的前面去掉注释# # sed 's/./g/2;s/.$//' passwd          #第2个字符替换成g,同时删除最后1个字符 # sed 's/[0-9]//g' passwd             #替换所有数字为空 # sed -r 's/(a)(b)/\2\1/' passwd          #界定范围,调换字符a和b的位置 # sed -r 's/^(.)(.*)(.)$/\3\2\1/' passwd       #界定范围,调换每行的第1个字符和最后1个字符的位置 # sed -r 's/([A-Z])/[\1]/g' passwd            #界定范围,每个字符后面加[]

 


6、写入文件
-i

# sed -r -i '/bash|nologin/d' passwd         #删除含bash或nologin的行 # sed -r -i '/bash|nologin/!d' passwd        #删除不含bash或nologin的行 # sed -i '$d' passwd                      #删除最后1行

 

免责声明 已整理-sed文本处理命令 - tengq - 博客园,资源类别:文本, 浏览次数:9 次, 文件大小:-- , 由本站蜘蛛搜索收录2022-11-24 06:03:02。此页面由程序自动采集,只作交流和学习使用,本站不储存任何资源文件,如有侵权内容请联系我们举报删除, 感谢您对本站的支持。 原文链接:https://www.cnblogs.com/reachos/p/16809754.html