regex - sed 正则表达式 最后一场比赛

标签 regex linux sed

我想将文件中每一行的最后一个匹配项更改为 XXXX 给定文件格式:

"192.xx2" "someting" "another2321SD" 

我想要:

"192.xx2" "someting" "XXXX" 

仅使用 sed 我的解决方案:

sed -r 's/"(?:.(?!".+"))+$/XXXX/' file

最佳答案

请记住

要屏蔽最后一对双引号之间的所有内容,您可以使用

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/

相关文章:

regex - 如何删除字符串第一次出现之前和最后一次出现之后的所有行?

asp.net-mvc - 密码验证(正则表达式?)

php - 检查字符串是否包含PHP中的下划线

PHP获取字符串中每个第一个字符的位置到数组中

python - 输入地标或如果不匹配 foo 字符串

linux - 哪个 Linux 发行版适合 Linux 编程的新手?

linux - 在 linux 中通过 bash shell 脚本更新 phpMyAdmin blowfish_secret

linux - 内核和正常进程

ctrl+c 不发送 SIGKILL 进行处理

sed - 用 ';' 替换 ';\n'