использование редактора потоков с указанными позициями символов - PullRequest
0 голосов
/ 18 мая 2019

Я пытаюсь найти код, который удовлетворяет

1.) Заменить первый экземпляр от 3 до 5.

2.) 1.) возможно только в том случае, если 3 является первым числом цифры.

например,

38765 -> 58765

43765 не будет преобразован.

пока у меня есть,

sed 's/^3/5/' *.txt

но я просто не могу найти способ указать условие, когда позиция 1 == 3.

Что я могу сделать, чтобы сделать улучшения?

1 Ответ

1 голос
/ 18 мая 2019

Sed:

$ echo 38765 | sed 's/^3/5/'
58765
$ echo 43765 | sed 's/^3/5/'
43765

т.е.просто замените ведущий 3 на 5r.

Чтобы заменить 3 во второй позиции:

$ echo 33765 | sed 's/\(^.\)3/\15/'
35765

Более общий подход:

$ echo 33333 | sed 's/\(^.\{3\}\)3/\15/'
33353                       ^
                            number of characters before the one to replace, 0-4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...