Chinaunix
标题:
SED 删除匹配行问题。求助。~~~~~~~~~
[打印本页]
作者:
张不凡
时间:
2012-07-27 16:11
标题:
SED 删除匹配行问题。求助。~~~~~~~~~
test.txt
-----------------------------
aaaaaaa
happy-123456
bbbbbb
asdasawe
happy-123456
dsafsdfsd
sagasdfasd
happy-123456
------------------------------
我想用sed删除包含happy-123456的行,只想删除第一行,变成
-----------------------------
aaaaaaa
bbbbbb
asdasawe
happy-123456
dsafsdfsd
sagasdfasd
happy-123456
------------------------------
用sed -i "/happy-123456/d" test.txt 会把所有的匹配行都删除掉。
有没有办法只删除第一行?
作者:
kk5234
时间:
2012-07-27 16:21
sed -i ':a;N;$!ba;s/happy-123456\n//' file
复制代码
作者:
张不凡
时间:
2012-07-27 16:39
回复
2#
kk5234
能不能解释一下。。。。。
作者:
kk5234
时间:
2012-07-27 16:43
回复
3#
张不凡
先把文件中所有的行读入pattern space中,再用s命令删除第一个含happy-123456的行。
作者:
jiejie455
时间:
2012-07-27 17:36
本帖最后由 jiejie455 于 2012-07-27 17:38 编辑
sed '0,/happy-123456/{/happy-123456/d}' data
作者:
dn833
时间:
2012-07-27 17:38
sed '1,/happy-123456/{/happy-123456/d}'
复制代码
2楼命令太深奥看不懂。。。。。。写个肤浅易懂的
作者:
张不凡
时间:
2012-07-27 18:03
回复
6#
dn833
这个也求个解释= =我菜鸟啊。。后面那个大括号 不懂啊~
作者:
hbmhalley
时间:
2012-07-27 19:38
/happy-123456/{x;/./p;g;d}
复制代码
作者:
blackold
时间:
2012-07-28 11:45
awk
awk '/happy/&&!f++{next}1' urfile
复制代码
作者:
blackold
时间:
2012-07-28 12:02
本帖最后由 blackold 于 2012-07-28 20:27 编辑
回复
6#
dn833
如果第一行就是 happy-123456 ,就不行了。
作者:
blackold
时间:
2012-07-28 12:03
回复
8#
hbmhalley
这方法好,比较通用。g是多余的吧。
作者:
hbmhalley
时间:
2012-07-28 13:51
回复
11#
blackold
... 不小心脑抽了 谢提醒
作者:
dn833
时间:
2012-07-28 20:21
回复
10#
blackold
多谢指正啊。。。。。。。考虑不周~
作者:
blackold
时间:
2012-07-28 22:39
错误示范
:
awk 'NR==1,/happy/{if(/happy/)next}1' urfile
复制代码
应该是:
awk 'NR==1,/happy/{if(/happy/)next}1' urfile
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2