unix – grep反转搜索与上下文
发布时间:2020-12-15 18:38:45 所属栏目:安全 来源:网络整理
导读:我想在文件中的匹配行之前和之后过滤掉几行. 这将删除我不想要的行: $grep -v "line that i don't want" 这将打印出我不想要的行之前和之后的2行: $grep -C 2 "line that i don't want" 但是当我结合它们时,它不会过滤掉我不需要的行之前和之后的两行: #
我想在文件中的匹配行之前和之后过滤掉几行.
这将删除我不想要的行: $grep -v "line that i don't want" 这将打印出我不想要的行之前和之后的2行: $grep -C 2 "line that i don't want" 但是当我结合它们时,它不会过滤掉我不需要的行之前和之后的两行: # does not remove 2 lines before and after the line I don't want: $grep -v -C 2 "line that i don't want" 如何过滤掉不只是我不想要的行,而且还要前后的行?我猜这个sed会比这更好 编辑:我知道这可以在几行awk / Perl / Python / Ruby / etc中完成,但是我想知道是否有一个简洁的单行我可以从命令行运行.
试试这个:
sed 'h;:b;$b;N;N;/PATTERN/{N;d};$b;P;D' inputfile 您可以在模式之前更改N个命令的数量,以影响要删除的行数. 您可以以编程方式构建一个包含N个命令数的字符串: C=2 # corresponds to grep -C N=N for ((i = 0; i < C - 1; i++)); do N=$N";N"; done sed "h;:b;$b;$N;/PATTERN/{N;d};$b;P;D" inputfile (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |