用sed替换部分模式

ERH

我想用模式中间的a代替space总是在数字之后|的a。该行后面有时也有一些我不想替换的类似模式(请参见示例中的第一/第二行)。

例:

12315 asdfea 1 1ffesa
45456 asefasef 1 era
12 asfase
4 4aefs

我需要的:

12315|asdfea 1 1ffesa
45456|asefasef 1 era
12|asfase
4|4aefs

我已经试过了:

 sed 's/\([0-9][ ][a-zA-Z]\)/|/g' file.txt

但是,这会删除模式,如下所示:

|sdfea 1 1ffesa
|sefasef 1 era
|sfase
|4aefs

这不是我所需要的。

日深

对于给定的样本输入/输出,

$ sed 's/ /|/' file.txt
12315|asdfea 1 1ffesa
45456|asefasef 1 era
12|asfase
4|4aefs

默认情况下,只会替换第一个匹配项。g修饰符将替换所有匹配项


替换数字和字母之间的第一个匹配空格(匹配也取决于语言环境

$ sed 's/\([0-9]\) \([a-zA-Z]\)/\1|\2/' file.txt
12315|asdfea 1 1ffesa
45456|asefasef 1 era
12|asfase
4 4aefs

这使用捕获组和反向引用请注意,最后一行未修改

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章