我想使用 perl 或 ubuntu 命令替换文本文件中的特定单词并将结果保存在多个文本文件中?

我想使用 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

答案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会在内部优雅地处理这个问题)。但请注意,这意味着该文件将是被截断的下次处理相同的单词时,而不是附加到。在这两段代码中,输出文件将在第一次输出时被截断。

相关内容