如果模式匹配,则退出awk
我想知道我是否可以告诉awk在第一次相遇后停止搜索模式1到模式2。因为我正在扫描的文件包含4GB的文本,每次重复awk命令都需要一分钟的时间来计算,而且我必须执行一百万次。真的有一百万次了 我试图优化的线路如下所示:如果模式匹配,则退出awk,awk,exit,Awk,Exit,我想知道我是否可以告诉awk在第一次相遇后停止搜索模式1到模式2。因为我正在扫描的文件包含4GB的文本,每次重复awk命令都需要一分钟的时间来计算,而且我必须执行一百万次。真的有一百万次了 我试图优化的线路如下所示: awk "/MODEL ${j}/,/ENDMDL/" j=$j filename.pdb > outputfile.txt 提前感谢您对awk的帮助: awk '/MODEL/,/ENDMDL/;/ENDMDL/{exit}' mybigfile 使用se
awk "/MODEL ${j}/,/ENDMDL/" j=$j filename.pdb > outputfile.txt
提前感谢您对awk的帮助:
awk '/MODEL/,/ENDMDL/;/ENDMDL/{exit}' mybigfile
使用sed
:
sed -n '/MODEL/,/ENDMDL/p;/ENDMDL/q' mybigfile
不要使用/start/,/end/模式,当你需要做除基础之外的任何事情时,它只会让你的生活更艰难。请尝试以下方法:
awk -v j="$j" '$0 ~ "MODEL " j{f=1} f; f&&/ENDMDL/{exit}' filename.pdb
为什么不使用
grep--max count=NUM
?这可能是一个更好的问题,因为您可以使用sed:sed'/patternA/,/patternB/!d/patternB/q'filename.pdb>outputfile.txt
,这可能比awk快。非常感谢验证码工作正常,现在不到一秒钟!