Chinaunix
标题:
删除匹配行和之后两行,怎么写?
[打印本页]
作者:
johnson0418
时间:
2015-12-14 12:26
标题:
删除匹配行和之后两行,怎么写?
删除匹配行和之后两行,怎么写?
$sed '/Storage/,+2d' a.txt 执行不了。
sed: -e expression #1, char 18: Unexpected ','
作者:
waker
时间:
2015-12-14 12:57
/Storage/{$!N;$!N;d}
作者:
songyc_2015
时间:
2015-12-14 13:06
awk '/Storage/{n=3}n-->0{next}1' file
作者:
jcdiy0601
时间:
2015-12-14 13:23
sed '/Storage/{N;N;d}' file
复制代码
作者:
songyc_2015
时间:
2015-12-14 13:33
sed -r '/Storage/{:1;$!N;x;s/^/./;/^.{2}$/!{x;b1};d}' file
作者:
johnson0418
时间:
2015-12-14 16:40
回复
3#
songyc_2015
感谢,测试Ok
作者:
johnson0418
时间:
2015-12-14 16:41
回复
5#
songyc_2015
已经解决,-r 我的系统 里没有这个参数。
作者:
johnson0418
时间:
2015-12-14 16:42
回复
2#
waker
感谢,已解决!你写的太精简了,我搞不清楚
作者:
johnson0418
时间:
2015-12-14 16:43
回复
4#
jcdiy0601
感谢,已解决!我试过你的也是有提示 sed: -e expression #1, char 18: Unexpected ','
作者:
johnson0418
时间:
2016-01-05 19:35
回复
3#
songyc_2015
awk用的少。再问下:
删除匹配行后面所有的(包括自身行),怎么表达?
作者:
songyc_2015
时间:
2016-01-05 22:29
回复
10#
johnson0418
awk '/Storage/,0{next}1' file
复制代码
作者:
南武水寿
时间:
2016-01-06 09:55
awk '/Storage/{n=3}n-->0{next}1' file 如果把条件n-->0 改成 n-- , 即程序为awk '/Storage/{n=3}n--{next}1' file时, 为什么只打印匹配行后面的第三行,余下的都不打印?
没想明白
回复
3#
songyc_2015
作者:
songyc_2015
时间:
2016-01-06 13:34
回复
12#
南武水寿
(tcp)~/priv/syc> nl file
1 aaaaaa
2 bbbbbbb
3 cccccccc
4 dddddddddd
5 eeeeeeeeeee
6 ffffffffffff
(tcp)~/priv/syc> awk '/aaa/{n=3}n--{next}1' file
dddddddddd
复制代码
n--{next}等价于if(n--){next},即n先做判断,再自己减一,在awk里,0为false,非0为true
awk读取第1行【aaaaaa】时,n=3不为0,则会执行next
awk读取第2行【bbbbbbb】时,n=2不为0,则会执行next
awk读取第3行【cccccccc】时,n=1不为0,则会执行next
awk读取第4行【dddddddddd】时,n=0为0,则不会执行next,而执行后面的1,这里的1等价于if(1){print $0},即输出dddddddddd
awk读取第5行【eeeeeeeeeee】时,n=-1不为0,则会执行next
awk读取第5行【ffffffffffff】时,n=-2不为0,则会执行next,
awk结束退出。
作者:
南武水寿
时间:
2016-01-06 17:51
soga! 之前我以为条件小于0就不执行{next}
回复
13#
songyc_2015
作者:
johnson0418
时间:
2016-01-06 21:28
回复
11#
songyc_2015
谢谢你!
如果遇到路径或变量的要加什么符号,试不出来
比如:我要查找的是Storage/abc/def这一段,或是 变量$DT,要加什么符号?
作者:
songyc_2015
时间:
2016-01-06 22:43
回复
15#
johnson0418
(tcp)~/priv/syc> cat file
bbbbbbb
Storage/abc/def/aaaaaaaaaaaaaaaaaaaa
cccccccc
dddddddddd
eeeeeeeeeee
ffffffffffff
(tcp)~/priv/syc> awk '/Storage\/abc\/def/' file
Storage/abc/def/aaaaaaaaaaaaaaaaaaaa
(tcp)~/priv/syc> awk -vs="Storage/abc/def" '$0~s' file
Storage/abc/def/aaaaaaaaaaaaaaaaaaaa
复制代码
作者:
johnson0418
时间:
2016-01-06 22:54
回复
16#
songyc_2015
谢谢!
DT=`date +'%b %d'`
awk ‘/$DT/,0{next}1' aa.log 中间的变量要加什么符号?
作者:
songyc_2015
时间:
2016-01-06 23:00
本帖最后由 songyc_2015 于 2016-01-06 23:01 编辑
回复
17#
johnson0418
awk -vs="${DT}" '$0~s,0{next}1' aa.log
复制代码
作者:
johnson0418
时间:
2016-01-06 23:25
回复
18#
songyc_2015
感谢你的耐心回复,生活愉快!
作者:
baby_神
时间:
2016-01-06 23:57
[root@07 ~]# seq 5 |sed '/2/,+2d'
1
5
复制代码
可以呀,你的为啥不行
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2