LINUX.ORG.RU

Удаление избранных строк Bash

 


1

1

Добрый день! есть файл вида:

/home/work/1.log:
Error line1
Error line2
/home/work/2.log:
/home/work/3.log:
/home/work/4.log:
Error line1

Нужно удалить строки
/home/work/2.log:
/home/work/3.log:
(После которых нет сообщений об Error)

Подскажите, пожалуйста, как это можно реализовать?

$ cat data.txt 
/home/work/1.log:
Error line1
Error line2
/home/work/2.log:
/home/work/3.log:
/home/work/4.log:
Error line1

$ cat error.awk 
BEGIN {
        RS="/home/work/"; 
        FS="\n"; 
}
/Error/ {print}
END{}

$ awk -f ./error.awk ./data.txt 
1.log:
Error line1
Error line2

4.log:
Error line1

anonymous
()
$ echo '/home/work/1.log:
Error line1
Error line2
/home/work/2.log:
/home/work/3.log:
/home/work/4.log:
Error line1' | sed '/^Error/!d'
Error line1
Error line2
Error line1
drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.