Perl
我想替換文本文件中的特定單詞並使用 perl 或 ubuntu 命令將結果保存在多個文本文件中?
我有一個包含以下內容的文件 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
內部優雅地處理這個問題)。但是請注意,這意味著文件將在下一次處理相同的單詞時被*截斷,而不是附加到。*在這兩段程式碼中,輸出文件將在第一次輸出到它們時被截斷。