2

我想知道是否可以告诉 awk 在第一次遇到后停止搜索模式 1 到模式 2。因为我正在扫描的文件包含 4 GB 的文本,并且每次重复 awk 命令都需要大约一分钟的时间来计算,而我必须执行一百万次。字面意思是一百万次。

我试图优化的行是这样的:

awk "/MODEL        ${j}/,/ENDMDL/" j=$j filename.pdb > outputfile.txt

在此先感谢您的帮助

4

2 回答 2

2

awk

awk '/MODEL/,/ENDMDL/;/ENDMDL/{exit}' mybigfile

sed

sed -n '/MODEL/,/ENDMDL/p;/ENDMDL/q' mybigfile
于 2013-06-27T21:10:58.657 回答
0

不要使用 /start/,/end/ 模式,当你需要做除了基础之外的任何事情时,它只会让你的生活变得更加艰难。试试这个:

awk -v j="$j" '$0 ~ "MODEL        " j{f=1} f; f&&/ENDMDL/{exit}' filename.pdb
于 2013-06-28T03:20:49.633 回答