Как делать разные действия с разными строками при чтении одного файла в shell?

Я хочу прочитать файл, часть строк я хочу отсортировать, а часть нет, одной командой. Пример: Есть файл, который содержит header, начинающийся с символа #, его я хочу просто записать в аутпут, а есть строки, не начинающиеся с этого символа, их необходимо отсортировать и записать в тот же файл. Я могу сделать это двумя командами дважды прочитав файл, но если файлы достаточно большие это может быть накладно.

cat input_file | grep "^#" > output_file

cat input_file | grep -v "^#" | sort >> output_file

Вот как можно сделать так чтобы, если строка начинается с #, то она просто записывалась, а если не начинается, то они сортировались?


Ответы (0 шт):