Perl

我想替換文本文件中的特定單詞並使用 perl 或 ubuntu 命令將結果保存在多個文本文件中?

  • July 25, 2021

我有一個包含以下內容的文件 results.txt:

the word: word1 is a not detected

我有一個 txt 文件,其中包含以下單詞列表:

word1 word2 word3 ...

我想生成具有相同名稱單詞的txt文件,並將“word1”逐行替換為另一個txt文件中的單詞,如下所示:

file1:resultword1.txt 包含:

the word: word1 is a not detected

file2:resultword2.txt 包含:

the word: word2 is a not detected

file3:resultword3.txt 包含:

the word: word3 is a not detected

….ETC

假設您的單詞列表包含空格分隔的單詞:

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內部優雅地處理這個問題)。但是請注意,這意味著文件將在下一次處理相同的單詞時被*截斷,而不是附加到。*在這兩段程式碼中,輸出文件將在第一次輸出到它們時被截斷。

引用自:https://unix.stackexchange.com/questions/659838