2

Я хочу заменить некоторые строки, но каким-то образом я хотел бы добавить номер строки в конец заменяемой строки.

s/display/echo print {LINENUMBER}/

input file:
lorem ipsum
display

output:
lorem ipsum
echo print 2

Могу ли я сделать это с помощью sed?

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

Cs.

3 ответа3

3

Вы можете использовать функцию sed =, чтобы записать номер строки в строке, и функцию sed d, чтобы удалить соответствующий шаблон. Так :

sed '/^display$/{=
d
}' [input file]

будет выводить:

lorem ipsum
2

Предполагая, что в исходном файле у вас нет чисел в строке, вы можете добавить вторую команду sed для добавления 'echo print' для этих строк, что-то вроде:

sed  's/^(\d+)$/echo print \1/'

хотя точный синтаксис может меняться в зависимости от вашей системы (\d не всегда доступен и т. д.)

sed , наверное, не самый простой инструмент для этого.

2

Я бы сделал это с помощью awk:

awk '{if($0=="display") {print "echo print",NR} else print $0}' < file
2

Perl решение:

perl -pe '$_ = "echo print $.\n" if /display/' input

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .