Удаление прокомментированных строк в текстовом файле с помощью sed

Я знаю, что это - грех для парсинга ls, но что относительно этого:

find . -type f -maxdepth 1 | xargs ls -ltr | sed '1,3d' | awk '{print $9}' | xargs rm

Быстрый тест с 5 пустыми файлами:

$ >1
$ >2
$ >3
$ >4
$ >5
$ find . -type f -maxdepth 1 | xargs ls -lt | sed '1,3d' | awk '{print $9}' | xargs rm
$ ls -1
3
4
5

4
23.05.2017, 15:40
2 ответа

Использование sed удаляет команду (здесь принимающий GNU sed как найдено на Ubuntu и других системах GNU).

 sed -i '/^[@#]/ d' sample.txt

Если необходимо объяснить продвижение пробелов:

sed -i '/^\s*[@#]/ d' sample.txt
10
27.01.2020, 20:47
grep '^[^@#]' < file.in > file.out

даст вам строки, начинающиеся с любого символа, кроме @и #, поэтому эффективно удалите строки #foo, @foo, а также пустые строки.

grep -v '^[@#]' < file.in > file.out

сохранит пустые строки. Если вы хотите рассмотреть строки с пробелами перед @,#:

grep -v '^[[:blank:]]*[@#]' < file.in > file.out

А также убрать пустые строки:

grep '^[[:blank:]]*[^[:blank:]@#]' < file.in > file.out
1
27.01.2020, 20:47

Теги

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