我有这样一行:
"LExx 01236723 LE12"
我想找到LE12
并将LExx
替换为LE12
。
sed
有可能吗?
答案 0 :(得分:1)
您可以尝试以下操作:
$ echo "LExx 01236723 LE12" | sed 's/LExx\(.*LE\(..\)$\)/LE\2\1/'
LE12 01236723 LE12
说明
s # substitute
/LExx # find LExx
\(.* # save rest in arg1 (\1)
LE\(..\)$ # find LE and save next 2 char in arg2 (\2)
\) # end arg1
/
LE\2\1 # print LE + arg2 + arg1
/
答案 1 :(得分:0)
假设两个搜索字符串均为constants,然后使用带有正则表达式扩展名sed
的 GNU bash
(在\b
下运行)(对于单词边界):
sed '/LE12/s/\bLExx\b/LE12/' <<< "LExx 01236723 LE12"
输出:
LE12 01236723 LE12