Search 在第一场比赛后删除线
我需要删除包含单词“fox”的第一行之后的所有行 比如说下面的输入文件“in.txt” 结果将是Search 在第一场比赛后删除线,search,awk,text,remove,Search,Awk,Text,Remove,我需要删除包含单词“fox”的第一行之后的所有行 比如说下面的输入文件“in.txt” 结果将是 The quick brown fox jumps 我更喜欢用awk或sed编写的脚本,但任何其他命令行工具都很好,比如perl、php或python等 出于搜索目的,我将添加以下行: 发生后删除行 稍后编辑: 我在Windows中使用gnuwin32工具,我能找到的解决方案是: grep -m1 -n fox in.txt | cut -f1 -d":" > var.t
The quick
brown fox jumps
我更喜欢用awk或sed编写的脚本,但任何其他命令行工具都很好,比如perl、php或python等
出于搜索目的,我将添加以下行:
发生后删除行
稍后编辑:
我在Windows中使用gnuwin32工具,我能找到的解决方案是:
grep -m1 -n fox in.txt | cut -f1 -d":" > var.txt
set /p MyNumber=<var.txt
head -%MyNumber% in.txt > out.txt
grep-m1-nfoxin.txt | cut-f1-d“>var.txt
set/p MyNumber=out.txt
但是,我正在寻找一种更短、可移植的解决方案(此解决方案包含Windows特定的命令“set/p”
类似问题:
sed '0,/fox/!d' file
或
我在Windows中发现了一些使用grep、head和变量的东西,我在问题文本中添加了它作为研究,但应该有更好的解决方案,我猜这些脚本工作得很好,在单词的最后一个匹配后删除行如何?我要问另一个问题吗?另一个问题:在匹配后删除行如何,包括匹配行?在上面的示例中,只打印第一行-“快速”是的,我建议开始一个新问题。很好,我在这里开始了这个问题-这应该可以完成任务:
awk'NR==FNR{if(/fox/)hit=NR;next}FNR==hit{exit}{print}文件
这是对的一个小修改。
awk '{print} /fox/{exit}' file
sed '0,/fox/!d' file
sed -n '0,/fox/p' file