根据文本文件的名称查找和替换文本文件中的单词

Posted

技术标签:

【中文标题】根据文本文件的名称查找和替换文本文件中的单词【英文标题】:Find and Replace word in text files based on name of text file 【发布时间】:2017-11-18 07:39:02 【问题描述】:

我有 2 个文件:A.txt、B.txt

这两个文件都包含字母 NODE。

我想分别用 A.txt 和 B.txt 中的 A_NODE 和 B_NODE 替换每个文件中的 NODE。

我知道有一个 for 循环和 sed 涉及,但无法弄清楚这一点。有什么建议吗?

我在想:

for file in *; do sed -i 's/NODE/$file.NODE/g' file; done

【问题讨论】:

见:Difference between single and double quotes in Bash 您尝试set -xecho sed -i 's/NODE/$file.NODE/g' file 进行调试吗? 【参考方案1】:
for file in *; do sed -i "s/NODE/$(basename -s .txt file)_NODE/g" file; done
双引号 (") 代替单引号 (') 启用 bash 变量插值(替换 $ 表达式)。 $(...) 执行任意 shell 命令并插入结果。 basename -s .txt 从文件名中删除目录部分和后缀.txt

【讨论】:

那个确切的命令不起作用,但根据您的评论,我做了一些修改,并且做到了:for file in *; do sed -i "s/NODE/$(basename -s .txt "$file")_NODE/g" $file; done【参考方案2】:

谢谢@sapanoia:

这行得通:

for file in *; do sed -i "s/NODE/$(basename -s .txt "$file")_NODE/g" $file; done

【讨论】:

以上是关于根据文本文件的名称查找和替换文本文件中的单词的主要内容,如果未能解决你的问题,请参考以下文章

查找和替换文件中的单词/行

我们如何在匹配两个文本文件时查找和替换单词?

使用 PHP 为大型文本数据和文件加速算法

Java提取文本文档中的所有网址(小案例介绍正则基础知识)

导入文本查询字母单词个数

如何用bat文件查找并修改文本的内容?