Сед - Как я могу вставить строку после определенной строки И определенного символа?

  1. Добавьте специального пользователя и группу для каждого из ваших друзей
  2. Используйте SELinux с разрешающим режимом
1
11.06.2020, 15:04
2 ответа

Как насчет:

sed '
  /myFunc()/!b
  :1 
  s/;/; SNIPPET/;t
  n;b1'

Или для строки 13:

sed '
  13!b
  :1 
  s/;/; SNIPPET/;t
  n;b1'
2
29.04.2021, 00:20

Я бы не стал использовать sed - я не думаю, что это хороший инструмент для этой цели из-за присущей ему строчно-ориентированной природы.

Вместо этого я бы предложил:

#!/usr/bin/env perl
use strict;
use warnings;

while (<>) {
    #print current line (because we insert _after) 
    print;
    #extract the number. If you need to work on _actual_ line number, you need $.
    my ($num) = m/^(\d+)/;
    if ( $num > 13 and m/;/ ) {
        #print snippet, bail out
        print ++$num, " SNIPPET\n";    
        last;
    }
}
#print rest of file
print <>;

Примечание - это извлекает нумерацию из содержимого на основе вашего примера. Я не мог точно сказать, нужны ли вам реальные номера строк - хотя sed -e '13 .. ' подразумевает, что вы это делаете.

В каком случае:

if ( $. > 13 and m/;/ ) {
    print "SNIPPET\n"; 
    last;
}
0
29.04.2021, 00:20

Теги

Похожие вопросы