Могу я grep / awk / sed строку для нескольких совпадений в одной строке и получить информация после него?

Есть прямой способ узнать, когда fsck последний раз запускался в файловой системе:

tune2fs -l /dev/sdb8 | grep '^Last checked:'

(или dumpe2fs вместо tune2fs -l .)

В Debian наличие / forcefsck вызывает запуск сценариев загрузки fsck -f вместо fsck , который вызывает проверку файловой системы (обычно fsck просто сообщает, что файловая система чистая, и немедленно завершает работу). Я не знаю, изменила ли Kali Linux соответствующий сценарий ( /etc/init.d/checkroot.sh в системе SysVinit).

1
26.03.2019, 06:06
4 ответа

ваши данные в dat, используйте gnu sed;

$ sed -E 's/.*var1:\s(\S+).+var2:\s(\S+).*|.*var2:\s(\S+).+var1:\s(\S+).*/\1\4 \2\3/' dat
0
27.01.2020, 23:18

Вы можете сделать это вawk:

awk '{
        v1 = v2 = ""
        for (i=1; i<NF; i+=2) {
                if ($i == "var1:") v1 = $(i+1)
                if ($i == "var2:") v2 = $(i+1)
        }
        print v1, v2
     }'

Для каждой строки тестируются все поля с нечетными -номерами ($1, $3и $5). для того, чтобы быть var1:или  var2:, и, если они совпадают, копирует значение (из следующего поля $(i+1), который становится $2, $4или $6)до v1или v2.

2
27.01.2020, 23:18

В Perl создание хэша из пары ключ -значение:

$ perl -alnE 'my %h = @F; say "$h{qw(var1:)} $h{qw(var2:)}"' file
xxx bbbb
xxx aaaa
yyy bbbb
xxx aaaa
yyy aaaa
xxx aaaa
zzz bbbb
zzz aaaa
1
27.01.2020, 23:18

Вы можете сделать это несколькими способами, два из которых показаны ниже:

$ perl -lne 'print /(?=.*var1:\h+(\H+))(?=.*var2:(\h+\H+))/' input.file


$ sed -e '
     H;s/.*//;x
     s/.*[[:space:]]var2: \([^[:space:]]\{1,\}\)/\1 &/
     s/.*[[:space:]]var1: \([^[:space:]]\{1,\}\)/\1 &/
     s/ \n.*//
' input.file

С функциями из GNU sedмы можем немного упростить:

$ sed -Ee ' 
    s/^/\n/
    s/.*\svar2: (\S+)/\1 &/
    s/.*\svar1: (\S+)/\1 &/
    s/ \n.*//
' input.file

Выход:

xxx bbbb
xxx aaaa
yyy bbbb
xxx aaaa
yyy aaaa
xxx aaaa
zzz bbbb
zzz aaaa
1
27.01.2020, 23:18

Теги

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