awk подход:
Допустим, у нас есть следующий входной файл file.txt
(учитывая, что каждая строка содержит Line
в качестве первого поля) :
Line1: a
Line2: b
Line3: c
Line4: Name: 123
Line5: xyz
Line6: Name: 456
Line7: abc
Line8: Name: 111
Line9: www
Line10: Num: 222
Line11: abc
Line12: Name: 333
Line13: ccc
awk '{ if ($2 == "Name:") {
if ((getline l) > 0){
if (l ~ /^\S+ \S+/) { next } else { print $0 RS l }
}
} else { print }
}' file.txt
Вывод:
Line1: a
Line2: b
Line3: c
Line8: Name: 111
Line9: www
Line10: Num: 222
Line11: abc
'getline var' - считывает следующую запись из ввода awk в переменную var
Команда getline возвращает 1, если находит запись и 0, если она встречает конец файла.