Выполните поиск в файлах Linux, отфильтруйте определенную строку и удалите все остальное

О разбиении MSDOS на разделы:

This would seem to indicate that the first hard drive has a fat partition of some sort on the second disk partition and is referred to as an msdos partition scheme.

На самом деле указание msdos2имеет отношение только к схеме разбиения; Формат, используемый для определения разделов. Например, альтернативный формат — GPT. Это не имеет ничего общего с содержимым разделов, например, с используемыми файловыми системами, такими как FAT.

Относительно срезов:

What is a sub partition and how does it differ from logical and extended partitions? More specifically: what is a BSD 'a' partition and a first PC slice number?

Путаница здесь происходит из-за разницы в терминологии в системах BSD Unix. В игре есть два уровня «разделения».

Первый — это разделы MSDOS (или GPT ). На этом уровне информация о разделах хранится в структуре, расположенной в начале диска (, а в случае GPT копия хранится в конце диска ). Это уровень разделения, понятный аппаратному обеспечению; Прошивка BIOS или UEFI знает, как загрузить ОС (или менеджер загрузки/загрузчик )с таких разделов.

Вторым уровнем в данном случае является метка диска BSD . Эта информация о разделах хранится в разделе MSDOS/GPT. Кроме того, аппаратное обеспечение (, по крайней мере, в случае ПК ), не понимает и не использует этот уровень разделения. Операционная система должна что-то с этим сделать. Системы BSD могут использовать эту схему разбиения.

А вот и кикер. В контексте систем BSD,раздел MSDOS/GPT называется слайсом, а подразделы -, созданные меткой диска BSD, называются разделами.

Возможно, вы заметили сходство между разделами BSD и логическими разделами MSDOS. Хотя они концептуально похожи, в том, что раздел верхнего уровня -разделен на подразделы -, как вы можете видеть, они реализованы по-разному.

0
04.06.2021, 18:53
2 ответа

Использованиеawk:

awk '/user=/{gsub(/^.*user=|,.*$/, "");print $0}' file

Если вы хотите отображать user=и имя файла, команду можно изменить.

awk '/user=/{gsub(/^.*user=|,.*$/, "");
printf "%s:user=%s\n",FILENAME,$0}' *.log

В этой команде, если найден user=, то Функция gsub()принимает символы от начала записи до user=и после запятой после userдо конца записи изменяет их на пустую строку("").

1
28.07.2021, 11:27

Используйте GNU grepсPCRE:

grep -Po -- '(?<=user=).+?(?=,)' *.log

Если вы также хотите отображать ключевое слово user=:

grep -o -- 'user=[^,]*' *.log

вы даже можете отобразить файл, в котором совпадение прошло успешно, добавив опцию -Hк команде grepвыше (без нее, имя файла отображается только в том случае, если указано более одного файла ).

Таким образом, команда grepстановится:

grep -Ho -- 'user=[^,]*' *.log

И вывод:

pgsql.log:user=postgres
pgsql.log:user=postgres
2
28.07.2021, 11:27

Теги

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