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

Sed 仅当是给定符号时,才替换第n个字符,sed,Sed,我是sed新手,我正在尝试替换一行的第n个字符,只要是一个符号“-” 例如,仅当“X”为“-”时,才替换“X”的第四个位置: 要获得: aaabbbccc aaaXbbddd aaaXcccbb 我发现可以用以下命令替换第n个位置: sed的/^(.{3})。(.*)/\1X\2/,但我无法合并给定的条件(仅当是给定的符号时) 提前谢谢 echo "aaabbbccc aaa-bbddd aaa-cccbb"|sed -r 's/^(.{3})-(.*)$/\1X\2/' 输出: aa

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

例如,仅当“X”为“-”时,才替换“X”的第四个位置:

要获得:

aaabbbccc

aaaXbbddd

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

提前谢谢

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

aaabbbccc
aaaXbbddd
aaaXcccbb
输出:

aaabbbccc
aaaXbbddd
aaaXcccbb

这可能适合您:

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


这可能适合您:

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