regex - sed 和正则表达式问题

标签 regex sed

我需要帮助对文件执行 sed 语句,但我似乎无法弄清楚为什么我所拥有的不起作用。我已经彻底搜索过,每个结果都会出现类似的结果,但我只是不明白为什么我的结果没有我期望的结果。

我有一个包含多个列表的文件,例如

192.168.10.23:7020
192.168.10.23:4520
192.168.10.23:3320

等等。本质上我需要将 192.168.10.23:XX20 替换为 192.168.10.23:XX21。

除此之外,我还尝试过:

sed 's/\:\([0-9]\)\{2\}20/\:&21/g' $file

给出的结果如下:

192.168.10.23:702021
192.168.10.23:452021
192.168.10.23:332021

还有:

sed 's/\:\([0-9]\)\{2\}/\:&21/g'

给出的结果如下:

192.168.10.23:702120
192.168.10.23:452120
192.168.10.23:332120

其他尝试要么根本没有改变,要么产生截然不同的结果。我感觉我离自己很近,但又很远。任何帮助将不胜感激!

最佳答案

为什么你不能

sed 's/20$/21/'

但也有可能,本着您最初的解决方案的精神:

sed 's/\(:[0-9]*\)20/\121/'

它使用\1而不是&,它只重复括号匹配的部分。

关于regex - sed 和正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15233432/

相关文章:

unix - 如何让 sed 从文件中读取它的脚本?

linux - 如何在 bash 中一次对两行进行排序,使用第二行作为索引?

python - 对于格式错误的 python 代码,sed 中的 camelCase 到 snake_case

regex - 打印行中的第一个数字,后跟制表符和没有数字的行

bash - 解析文件并使用一些字段作为变量,使用 header 作为 bash 中的名称

javascript - 如何清理多个空格/换行符?

python - 从列中提取数字以在 Pandas 中创建新列

python - 正确的 python 正则表达式返回 NoneType

regex - 解析 "\(|.*?)|)"- 太多)

java - 如何使用单个 replaceAll 查找 Java 中两个字符串的公共(public)字符?