В awk, к которому добавлен вопрос:
awk '$0 ~ /^FILE NAME: / { if (count++ == 0) print; }
$0 !~ /^FILE NAME: / { print; }'
Вы, вероятно, можете сделать это с sed
, но это не особо чисто.
Вопрос немного поясняется комментарием. Ответ удивительно похож, хотя важна разница:
awk '$0 ~ /^FILE NAME: / { if (count[$0]++ == 0) print; }
$0 !~ /^FILE NAME: / { print; }'
Я все еще предполагаю, что вам нужны все остальные строки - в выходных данных примера показаны только строки «ИМЯ ФАЙЛА», но вопрос об удалении других строк ничего не говорит. Очевидно, что если вам не нужны другие строки, исключите вторую строку сценария awk.