linux - 如何使用 Sed 搜索将整个单词替换为文件中的字符串匹配项

标签 linux bash unix awk sed

我修改了此处找到的代码:sed whole word search and replace

我一直在尝试使用正确的语法 \<\>让 sed 匹配文件中的多个术语。

echo "Here Is My Example Testing Code" | sed -e "$(sed 's:\<.*\>:s/&//ig:' file.txt)"

但是,我认为,因为它正在查看文件,所以它不匹配完​​整的单词(仅完全匹配),留下一些拆分单词和单个字符。

有人知道正确的语法吗?

例子:

输入:

Here Is My Example Testing Code

文件.txt:

example
test

期望的输出:

Here Is My Code

最佳答案

修改你的 sed 命令如下应该提取你想要的,

sed -e "$(sed 's:\<.*\>:s/&\\w*\\s//ig:' file.txt)"

简要说明,

  • \b 匹配单词和非字母数字字符之间的位置。在这种情况下,file.txt 中的模式“test”与“Testing”不匹配。
  • 通过这种方式,修改附加有 \w* 的搜索模式应该可以工作。 \w 实际匹配[a-zA-Z0-9_]
  • 并且不要忘记消除每个搜索模式后面的空格,应该添加 \s

关于linux - 如何使用 Sed 搜索将整个单词替换为文件中的字符串匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46676657/

相关文章:

linux - 如何将带引号的字符串作为参数传递给 bash 中的函数?

linux - 使用 ssh 清除远程服务器中的缓存

linux - 如何从文件名中删除单引号

android - 使用 Android 应用程序运行脚本

python - 使用python运行其他程序

c++ - Boost::this_thread::get_id() 无字符串操作

c - Linux 2.6.x 中线程的动态优先级是如何计算的?

Linux 内核非对称 key 解析器

linux - 从 bash 或 node 写入终端环境

linux - 包含多个命令的 Shell 脚本文件