使用 awk 提高 bash 循环的效率

使用 awk 提高 bash 循环的效率

我必须使用从一个文件的第二列提取的文本来编写一个相当大的文本文件(> 300,000 行),然后在每一行前面添加和附加文本,最后将其写入新文件。

我有以下 while 循环,它运行良好。但它很慢,每次运行都要花很多分钟。我怀疑有更好的 awk 配方/方法,速度会快得多。有人能建议一种更快的方法吗?

SOURCEFILE 示例

useless9   important1   more useless stuff
useless8   important2   more useless stuff
useless7   important3   more useless stuff
useless6   important4   more useless stuff

从源文件中提取文本并输出最终结果文件。

while read line; do

  mytext=`echo $line | awk -v RS='\r\n' '{print $2}'`

  echo "$PrePattern $mytext $PostPattern" >> $OUTFILE

done < $SOURCEFILE

输出文件

PrePattern text important1 PostPattern text
PrePattern text important2 PostPattern text
PrePattern text important3 PostPattern text
...

答案1

你需要多学习一下awk。

awk '{print "prepattern mytext "$2" postpattern";}' <$sourcefile >$outfile

相关内容