我修改了此处找到的代码: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/