Есть прямой способ узнать, когда 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).
ваши данные в dat, используйте gnu sed;
$ sed -E 's/.*var1:\s(\S+).+var2:\s(\S+).*|.*var2:\s(\S+).+var1:\s(\S+).*/\1\4 \2\3/' dat
Вы можете сделать это в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
.
В 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
Вы можете сделать это несколькими способами, два из которых показаны ниже:
$ 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