我必须转换第一次出现的单词'the',并在每行输入文本中用'this'替换它,区分大小写搜索和替换.
以下是我执行任务的命令但是它出错了
sed's /\Wthe\W/this /'
我发现的问题类似于这个模拟案例:
输入文字:作为单词
输出文本(正确):作为该单词
输出文本:asthatword(命令生成的内容).
\W是PCRE,而不是BRE或ERE.因此,标准不支持它sed.
sed 's/(^|[[:space:]])the([[:space:]]|$)/\1this\2/'
Run Code Online (Sandbox Code Playgroud)
在^|[[:space:]],^匹配行的开头; [[:space:]]匹配任何空白字符类.将其放在括号内会创建一个匹配组,稍后可以引用该组\1(因为这是第一个这样的组).
[[:space:]]|$做同样的事情,但$指示行尾.
也就是说 - 如果你只针对GNU sed,而不是POSIX sed,你可能会考虑:
sed 's/\<the\>/this/'
Run Code Online (Sandbox Code Playgroud)