1つのファイルの2番目の列から抽出されたテキストを使用して、かなり大きなテキストファイル(> 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
OUTFILE
PrePattern text important1 PostPattern text
PrePattern text important2 PostPattern text
PrePattern text important3 PostPattern text
...
グレン・ジャックマン、どうもありがとう!私が疑ったように、パフォーマンスの向上が必要でした。あなたのソリューションは、ちょうど〜3秒に〜15分間のプロセスを回し
—
スローポーク
ちょうど1がどうなるときには、ゲインの多くは30万個のawkのプロセスを起動する必要がされていません
—
グレン・ジャックマン
awk -v pre="$PrePattern" -v post="$PostPattern" '{print pre, $2, post}' "$SOURCEFILE"