$ sed -e 's/stringA/\n/;s/.*\n//;s/stringB.*//' file
Удаление кода до строки A выполняется в 2 этапа. (измените строку A на новую строку, а затем удалите первую строку )вместо более очевидного «удалить все до строки A», поскольку удаление должно быть до первого вхождения строки A, а не последнего. sed не поддерживает не -жадные регулярные выражения, в отличие от многих других инструментов, таких как python и perl.
$ perl -lpe '
my($sa, $sb) = qw/stringA stringB/;
my $p2 = index($_, $sb);
my $p1 = index($_, $sa)+length($sa);
$_ = substr($_, $p1, $p2-$p1);
' file
С утилитами GNU,
ls -1t | sort -nst '_' -k 1,1
ls -1t
сортирует по времени модификации, выводя по одному файлу в строке.
sort
:
-n
:Выполнить числовую сортировку, -t '_'
:Используйте подчеркивание в качестве разделителя полей, -k 1,1
:Сортировать первое поле (, т. е. две цифры перед первым символом подчеркивания ), -s
:Выполните стабильную сортировку, т. е. не используйте следующие поля для сортировки, если две строки имеют одно и то же 1-е поле. Если вы предпочитаете вывод в формате длинного списка,
ls -lt | sort -nsk 9.2
Клавиша 9.2
означает :Сортировать только первые два символа 9-го поля.
Я предполагаю, что это только для визуализации, так как синтаксический анализls
не должен быть частью какого-либо серьезного сценария.