我有一个文件 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
答案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
...这样你就不会在一段时间后用完文件描述符(我相信 GNUawk
会在内部优雅地处理这个问题)。但请注意,这意味着该文件将是被截断的下次处理相同的单词时,而不是附加到。在这两段代码中,输出文件将在第一次输出时被截断。