sed(示例)
sed(示例)
|
sed [选项] [地址界定]编辑命令 被编辑文本 |
|
|
地址界定: |
#,# #,+#
/part1/,/part2/ #,/part1/ 没有/part1/,# |
|
编辑命令 w/path/filename 保存匹配到的行到指定文件 (若文件已经存在则直接覆盖里面的内容,不提示) = 为模式空间中保存的行打印行号 (行号是插入到匹配到的行的前面) !对模式空间中匹配到的行取反 ????
编辑命令不能组合使用; |
/part1/,/part2/是指在全文依次去匹配 |
|
选项 |
|
|
s/// 查找替换,s@@@ s### s///g s///p s///w/path/to/somefile |
示例2 示例3 |
示例1:

第二个匹配结果有两组,sed先匹配到root开头的第一行保存后,再去匹配bin,此时从第二行读入发现恰好也匹配到了bin,因此本次/root/,/bin/模式匹配完成。但是sed不会停止反而会继续往下匹配。因此
接下来发现第三行(operator开头行)中包含root 然后保存,再继续往下一行去匹配bin,找到后保存。
这时候就有了第二组/root/,/bin/模式。sed会继续再往下搜索但是没有再匹配到/root/,/bin/模式而结束。打印输出匹配到的两组结果!
示例2
![[root@centos7 20:30:16 ens33 1 sed -n '2p' I sed -r s/. *inet ( * . ) net. 172.20.95.240 [root@centos7 data]"](https://images2018.cnblogs.com/blog/1404290/201808/1404290-20180831160302589-1660852208.jpg)
示例3

示例:
nl /etc/passwd |sed '2d'只删除第 2 行
sed '/^#\|^[[:space:]]*$/d' f1搜索出来以#号开头或有空白行
sed –n '2p' /etc/passwd 输出第二行
sed –n '1,4p' /etc/passwd从第一行到第四行显示
sed –n '/root/p' /etc/passwd 显示匹配到root的行
sed –n '2,/root/p' /etc/passwd 从2行开始匹配root,并显示
sed -n '/^$/=' file 显示空行行号
sed –n –e '/^$/p' –e '/^$/=' file 多点编辑,我觉得类似grep的-e选项,或者的关系
sed '/root/a\superman' /etc/passwd行后添加字符
sed '/root/i\superman' /etc/passwd 行前
sed '/root/c\superman' /etc/passwd 代替行
sed '/^$/d' file删除空行,不包括空格组成的空行
sed '1,10d' file
nl /etc/passwd | sed '2,5d'
nl /etc/passwd | sed '2a tea'在第二行后面添加tea
sed 's/test/mytest/g' example 将test替换为mytest
sed –n 's/root/&superman/p' /etc/passwd 单词后,相当于后向引用,替换为rootsuperman
sed –n 's/root/superman&/p' /etc/passwd 单词前
sed -e 's/dog/cat/' -e 's/hi/lo/' pets
sed –i.bak 's/dog/cat/g' pets 编辑前先将pets备份为pets.bak然后进行替换编辑
涉及保持空间的高级用法:
sed -n 'n;p' FILE:显示偶数行;
sed '1!G;h;$!d' FILE:逆序显示文件的内容;
sed ’$!d' FILE:取出最后一行;
sed '$!N;$!D' FILE:取出文件后两行;
sed '/^$/d;G' FILE:删除原有的所有空白行,而后为所有的非空白行后添加一个空白行;
sed 'n;d' FILE:显示奇数行;
sed 'G' FILE:在原有的每行后方添加一个空白行;

浙公网安备 33010602011771号