替换第n个字符,仅当给定符号时

时间:2012-02-09 10:30:04

标签: sed

我是sed的新手,我正在尝试替换一行的第n个字符,只要它是一个符号“ - ”

例如,如果是“ - ”,则将第4个位置替换为“X”:

aaabbbccc

aaa-bbddd

aaa-cccbb

得到:

aaabbbccc

aaaXbbddd

aaaXcccbb

我发现可以用这个命令替换第n个位置: sed's / ^(。{3})。(。*)/ \ 1X \ 2 /'但是我无法合并给定条件(仅当给定符号时)

提前致谢!

2 个答案:

答案 0 :(得分:3)

 echo "aaabbbccc
aaa-bbddd
aaa-cccbb"|sed -r 's/^(.{3})-(.*)$/\1X\2/'

输出:

aaabbbccc
aaaXbbddd
aaaXcccbb

答案 1 :(得分:0)

这可能对您有用:

sed 's/^\(.\{3\}\)-/\1X/' file

或者

sed '/^.\{3\}-/s/./X/4' file