sed [OPTION]... '地址定界+[高级]编辑命令' file
不给地址: 对全文进行处理
单地址:
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:读取指定文件的文本至模式空间中匹配到的行后 =:为模式空间中的行打印行号 !:模式空间中匹配行取反处理
[root@cloud ~]# sed -r "/^[[:space:]]*$/d" /etc/grub2.cfg
[root@cloud ~]# sed -r "/^# *|^$/d" /etc/fstab
[root@cloud ~]# sed -r -n "/^[^#]/s/(.*)/#\1/p" /etc/fstab
[root@cloud ~]# echo /etc/fstab | sed -r "s@(.*/)(.*$)@\2@"
[root@cloud ~]# ifconfig eth0 | sed -r -n "s/.*inet (.*) net.*/\1/p"
[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
[root@cloud ~]# seq 10|xargs -n2 [root@cloud ~]# seq 10|sed 'N;s/\n/ /'