Chinaunix

标题: sed学习笔记5 [打印本页]

作者: 无尽黯然    时间: 2007-08-16 10:54
标题: sed学习笔记5
今天说的东西不像替换那么常用。
   
   1 删除命令d,它采用地址,如果行匹配这个地址就删除模式空间的内容。个人以为真正要掌握的知识不在这个命令上!而在于正则表达式,以及sed和awk的融合贯通,到那时删除才会有出神入化的效果!
删除文件中开头的10行
#sed '1,10d'
删除文件中的最后一行
#sed '$d'
删除文件中的最后两行 (这用到了sed的更高级命令,以后再说!)
#sed 'N;$!P;$!D;$d'
删除指定内容的重复行
(参考来源:
http://www.linuxpk.com/415.html

$cat test
werwrtert
ERROR*
ERROR*
ddffadfasf
sdfsfsfsfs
ERROR*
ERROR*
ERROR*
end
ERROR*
dddd
ERROR*
期望:
$./cx test
werwrtert
ERROR*
ddffadfasf
sdfsfsfsfs
ERROR*
end
ERROR*
dddd
ERROR*
脚本cx如下:
$cat cx
#!/usr/bin/awk -f
{ if ($0 == "ERROR*" && error_line == "ERROR*")
next; error_line=$0; print }
---------------------------
cat test | uniq

但是你没有指定重复的内容,这样,别的重复行也被删除了
如果test中有
abc
abc
如果我不希望删除abc呢?呵呵
补充一下uniq的用法
1. 无选项参数: 将源文件中的连续多相同行简化为一行,然后输出全文
2. -d : 将源文件中的连续多相同行简化为一行,然后输出这些行
2. -u : 排除源文件中的连续多相同行,然后输出其他行
  但如果重复的内容很多怎么删除这些重复的内容呢,这个要复杂很多了,以后再说!


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/43931/showart_361109.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2