【发布时间】:2018-02-19 18:56:37
【问题描述】:
我有两个文件。一个映射文件和一个输入文件。
猫地图.txt
测试:替换
猫输入.txt
test这个词应该被替换,但是testbook这个词不应该被替换 只是因为它有“_test”而被替换。
使用以下命令在文件中查找并将其替换为映射文件中的值。
awk 'FNR==NR{ array[$1]=$2; next } { for (i in array) gsub(i, array[i]) }1' FS=":" map.txt FS=" " input.txt
它的作用是搜索 map.txt 中提到的文本,并在同一个输入文件中替换为“:”之后的单词。 在上面的例子中,“test”用“replace”。
当前结果:
replace这个词应该被替换。但是replacebook这个词不应该仅仅因为它有_replace而被替换。
预期结果:
replace这个词应该被替换。但是testbook这个词不应该仅仅因为它有“_test”而被替换。
所以我需要的是,只有当这个词被发现时,它才必须被替换。如果这个词有任何其他字符,那么它应该被忽略。
感谢任何帮助。
提前致谢。
【问题讨论】:
-
文件
input.txt的内容丢失 -
@Inian 内容在“cat input.txt”下给出。我已经给出了一个示例语句。
-
@lfc_07,您的输入中没有
replacebook或_test或_replace。更新你的问题,它很模糊 -
对不起。什么是模糊的?全部在输入中。请检查。我正在用替换替换测试。
-
映射文件所做的是将这个词替换为“:”之后提到的另一个词
标签: bash shell awk sed scripting