格式:abc,后跟空格,或是一行中的最后一个字符。
orig="abc[[:space:]]+";
new=Hello
sed -i -r -e "s|${orig}|${new}|g" ./file ;
文件:
abc
abcd
abc
abc d
执行后:
abc
abcd
abc
Hellod
预期产量:
Hello
abcd
Hello
Hello d
我想念什么?
注意:我想保留空格字符。
如果要保留空间:
注意:我想保留空格字符。
然后,将它们匹配,但在替换后将它们还原:
orig='abc([[:space:]]+)'
new='Hello\1'
sed -E -e "s|${orig}|${new}|g" ./infile ;
这将生成此输出(要进行就地修改,请添加适当的-i
选项):
Hello
abcd
Hello
Hello d
当然,这是假设文件在某些行的末尾有一些空格:
$ cat infile | sed -n l
abc $
abcd $
abc $
$
abc d$
如果还需要正则表达式匹配不以空格结尾的行,则需要更复杂的正则表达式:
orig='abc([[:space:]]+|$)';
new='Hello\1';
sed -E -e "s,${orig},${new},g" ./infile ;
当然,s|||
必须更改定界符,s,,,
以避免与|
正则表达式要求的冲突。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句