我想将文件中每一行的最后一个匹配项更改为 XXXX 给定文件格式:
"192.xx2" "someting" "another2321SD"
我想要:
"192.xx2" "someting" "XXXX"
仅使用 sed 我的解决方案:
sed -r 's/"(?:.(?!".+"))+$/XXXX/' file
最佳答案
请记住
(?:...)
是 non-capturing group和 POSIX regex不支持此结构(?!...)
是负数 lookahead并且 POSIX 正则表达式也不支持这种构造。
要屏蔽最后一对双引号之间的所有内容,您可以使用
sed -r 's/(.*)".*"/\1"XXXX"/' file
sed 's/\(.*\)".*"/\1"XXXX"/' file
请参阅sed
demo :
s='"192.xx2" "someting" "another2321SD"'
sed -r 's/(.*)".*"/\1"XXXX"/' <<< "$s"
# => "192.xx2" "someting" "XXXX"
关于regex - sed 正则表达式 最后一场比赛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65360976/