Regex 塞德·雷格克斯最后一场比赛
我想在文件中更改每行中最后一个与XXXX的匹配项 给定文件格式:Regex 塞德·雷格克斯最后一场比赛,regex,linux,sed,Regex,Linux,Sed,我想在文件中更改每行中最后一个与XXXX的匹配项 给定文件格式: "192.xx2" "someting" "another2321SD" 我想要: "192.xx2" "someting" "XXXX" 仅使用sed 我的解决方案: sed -r 's/"(?:.(?!".+"))+$/XXXX/' file 请记住 (?:…)是,不
"192.xx2" "someting" "another2321SD"
我想要:
"192.xx2" "someting" "XXXX"
仅使用sed
我的解决方案:
sed -r 's/"(?:.(?!".+"))+$/XXXX/' file
请记住
是,不支持此构造(?:…)
是负数,POSIX正则表达式也不支持此构造(?!…)
sed-r的/(.*)*/\1“XXXX”/“文件”
sed的/\(.*\)“*”/\1“XXXX”/”文件
见:
s=''192.xx2”“某物”“另一个2321SD''
sed-r的/(.*)“.*/\1”XXXX/'记住捕获中最后一对双引号之前的内容
sed -r 's/^(.*)"[^"]*"$/\1"XXXX"/'
至少你要求改进。我不知道我的答案是否更好,但你也可以假设“
是输入的最后一个字符:sed的/“[^”]*“$/”XXXX/”@WalterA谢谢,Walter。假设最后引用的部分非常接近字符串的末尾,我认为当前的方法应该已经足够好了。由于问题标签,我没有考虑<代码> AWK ,我想可以有更多的假设。