Также это можно сделать следующим методом:
$ sed -n "/^[0-9]\{0,4\}$\|10000/p" logfile
Скажем, у меня был файл-пример, лог-файл
, вот так:
$ seq 9900 10050 | sed 's/$/ /' > logfile
В результате файл лог-файл
выглядит следующим образом:
$ head -5 logfile
9900
9901
9902
9903
9904
$ tail -5 logfile
10046
10047
10048
10049
10050
После каждой из этих строк есть пространство для трейлинга, благодаря строке sed 's/$/ /'
выше, когда мы создавали файл-пример.
Теперь, когда мы выполняем вышеприведенную команду sed
:
$ sed -n "/^[0-9]\{1,4\}[^0-9]\|10000/p" logfile | tail -5
9996
9997
9998
9999
10000
Мы получаем все до 10000, и ничего больше.
Выше sed
работает поиск строк, которые начинаются с диапазона цифр, 0-9, длиной от 1 до 4. Эту часть выполняет нотация на sed
, "/^[0-9]\{1,4\}[^0-9]
. В конце нотации [^0-9]
написаны символы, которые не являются 0-9. Это останавливает sed
от совпадения подстрок в числах, которые длиннее.
\|10000
совпадает с 10000, так как это немного уникальная закономерность по сравнению с остальными строками до нее. Трейлинг p
говорит sed
распечатать результаты.
Использование sed
на самом деле не является подходящим инструментом для поиска. Скорее всего, для этого лучше использовать grep
.
$ grep "\b\([0-9]\{1,4\}\|10000\)\b" logfile | head -5
9900
9901
9902
9903
9904
$ grep "\b\([0-9]\{1,4\}\|10000\)\b" logfile | tail -5
9996
9997
9998
9999
10000
Выше приведены все строки, которые содержат строку из 10000 или ниже цифр. \b
обозначает границу либо до, либо после строки.
Если вы удалите разделы подкачки, система не сможет их найти при следующей загрузке. Это нефатальная ошибка, но вам лучше также закомментировать (или удалить) соответствующие строки подкачки в / etc / fstab
.