次の内容を含むresults.txtファイルがあります。
the word: word1 is a not detected
次の単語のリストを含むtxtファイルがあります。
word1 word2 word3 ...
同じ単語名でtxtファイルを作成し、「word1」を次のように別のtxtファイルの単語に1行ずつ変更したいと思います。
file1: resultword1.txt には以下が含まれます。
the word: word1 is a not detected
ファイル2:resultword2.txtには以下が含まれます。
the word: word2 is a not detected
ファイル3:resultword3.txtには以下が含まれます。
the word: word3 is a not detected
....など
ベストアンサー1
単語リストにスペースで区切られた単語が含まれているとします。
awk '{ for (i = 1; i <= NF; ++i ) printf "the word: %s is a not detected\n", $i >("result" $i ".txt") }' words
このawk
コマンドは、ファイル内のスペースで区切られたすべての単語を繰り返しますwords
。各単語($i
)に対して、その単語が正しい位置に挿入されている文章を印刷します。出力は単語result
の前後に.txt
文字列が追加され、名前付きファイルに送信されます。
名前競合テストは実行されませんでした。
GNUを使用しないシステムでは、awk
次のことができます。
awk '{ for (i = 1; i <= NF; ++i ) {
fname = "result" $i ".txt"
printf "the word: %s is a not detected\n", $i >fname
close(fname)
}' words
...しばらくすると、ファイル記述子が不足しないようにします(GNUがこの問題を内部的に適切に処理すると信じていますawk
)。しかし、これはファイルです切り取った次に追加する代わりに、同じ単語を処理します。両方のコードでは、出力ファイルは最初の出力で切り捨てられます。