Perlまたはubuntuコマンドを使用してテキストファイル内の特定の単語を置き換え、結果を複数のテキストファイルに保存したいですか?

Perlまたはubuntuコマンドを使用してテキストファイル内の特定の単語を置き換え、結果を複数のテキストファイルに保存したいですか?

次の内容を含む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)。しかし、これはファイルです切り取った次に追加する代わりに、同じ単語を処理します。両方のコードでは、出力ファイルは最初の出力で切り捨てられます。

おすすめ記事