sed命令--三剑客老二
2022/2/24 6:21:26
本文主要是介绍sed命令--三剑客老二,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
格式
sed [OPTION]... '地址定界+[高级]编辑命令' file
常用选择
- i :修改内容
- i.bak:先备份,然后再修改内容
- r:支持正则表达式
- n:不输出模式空间内容到屏幕,即不自动打印
- e:支持多点编辑,多个条件连接字符
地址定界
-
不给地址: 对全文进行处理
-
单地址:
num, $: 指定行,最后一行
/pattern/:被此处模式所能够匹配到的每一行 -
地址范围:
n,m: 第n行到第m行
n,+m: 第n行到第 n+m 行
/pat1/,/pat2/: 被此处模式所能够匹配到的之间行
n,/pat1/:第n行到被配置到的字符串之间行n, m 是数字
pat[n] 是匹配的字符串 -
步进
1~2 奇数行。第一行,步长为两行
2~2 偶数行。第二行,步长为两行
编辑命令
d :删除,因为是删除啊,所以 d 后面通常不接任何东东; p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运 行~ a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦! w /path/somefile:保存模式匹配的行至指定文件 r /path/somefile:读取指定文件的文本至模式空间中匹配到的行后 =:为模式空间中的行打印行号 !:模式空间中匹配行取反处理
示例
- 删除/etc/grub2.cfg文件中所有以空白开头的行行首的空白字符
[root@cloud ~]# sed -r "/^[[:space:]]*$/d" /etc/grub2.cfg
- 删除/etc/fstab文件中不以#开头,后面至少跟一个空白字符的行的行首的和空白字符
[root@cloud ~]# sed -r "/^# *|^$/d" /etc/fstab
- 在/etc/fstab文件中不以#开头的行的行首增加#号
[root@cloud ~]# sed -r -n "/^[^#]/s/(.*)/#\1/p" /etc/fstab
- 处理/etc/fstab路径使用sed命令取出其目录和基名
[root@cloud ~]# echo /etc/fstab | sed -r "s@(.*/)(.*$)@\2@"
- 利用sed取出ifconfig命令中本机的IPv4地址
[root@cloud ~]# ifconfig eth0 | sed -r -n "s/.*inet (.*) net.*/\1/p"
- 统计centos安装光盘中Package目录下的所有rpm文件的以. 分割倒数第二个字段的重复次数
[root@cloud ~]# mount /dev/cdrom /opt/dvd [root@cloud ~]# ls /opt/dvd/Packages/ | sed -r "s/.rpm$//" | sed -r "s/.*\.(.*)/\1/" | sort | uniq -c [root@cloud ~]# ls /opt/dvd/Packages/ | sed -r "s/.*\.(.*).rpm/\1/" | sort | uniq -c
- 将文本文件的n和n+1行合并为一行,n为奇数行
[root@cloud ~]# seq 10|xargs -n2 [root@cloud ~]# seq 10|sed 'N;s/\n/ /'
这篇关于sed命令--三剑客老二的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南