Замена n-го символа, только если это заданный символ - PullRequest
0 голосов
/ 09 февраля 2012

Я новичок в sed и пытаюсь заменить n-й символ строки, только если есть символ "-"

например, заменить 4-ю позицию на «X», только если «-»:

aaabbbccc

aaa-bbddd

aaa-cccbb

чтобы получить:

aaabbbccc

aaaXbbddd

aaaXcccbb

Я обнаружил, что можно заменить n-ю позицию этой командой: sed 's / ^ (. {3}). (. *) / \ 1X \ 2 /', но я не могу включить данное условие (только если данный символ)

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 09 февраля 2012
 echo "aaabbbccc
aaa-bbddd
aaa-cccbb"|sed -r 's/^(.{3})-(.*)$/\1X\2/'

вывод:

aaabbbccc
aaaXbbddd
aaaXcccbb
0 голосов
/ 09 февраля 2012

Это может работать для вас:

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

или

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