grep
раствор:
grep -q '.\.sql$' file.txt && grep -v '\.sql$' file.txt > output_file.txt
Второй grep
оператор/команда будет выполняться только в том случае, если первый вернул нулевой статус выхода 0
, если найдено какое-либо совпадение с шаблоном .\.sql$
Окончательный output_file.txt
контент:
actual.class
actual1.class
actual2.class
actual3.class
actual4.class
Мы все еще можем использовать sort
, если это большой файл:
#!/usr/bin/env bash
perl -F'\t' -ne '{$F[1] =~ s/o/,/; $F[4] =~ s/l/t/; print join "\t",@F}' file|\
sort -t $'\t' -k 2,2 -k 5,5 |\
perl -F'\t' -ne '{$F[1] =~ s/,/o/; $F[4] =~ s/t/l/; print join "\t",@F}'
Первый perl-скрипт изменяет o
на ,
во втором столбце, l
на t
в пятом, чтобы подготовить сортировку.
Второй perl-скрипт возвращается.
Существует метод, называемый DSU, украшение -сортировка -неукрашение или преобразование Шварца.
Базовый метод заключается в изобретении собственных ключей-заменителей, которыми могут быть любые комбинации ваших данных, (извлеченных из любых частей ваших записей, возможно, зависящих от других полей ). Это должны быть только ранжирования в требуемом порядке значимости. Например, часто полезно заполнить числовые поля нулями -. Вы можете сделать окончательный порядок стабильным, добавив номер входной строки в качестве финального подраздела. Общая длина ключа должна быть одинаковой для всех записей.
Затем вы сортируете их в соответствии с -порядком k1.1 (вся запись ). Часто это может быть быстрее, чем сортировка по нескольким ключам, потому что обычно сортировка восстанавливает два мультиключа для каждого сравнения.
Наконец, вы снимаете декорирование с отсортированного вывода, обрезая декорирование фиксированной -длины.