Как у меня в системе, на /dev/sda1 -3. Первый раздел моего жесткого диска - sda1 и содержит загрузочный раздел. У меня есть диск подкачки в sda2. У меня есть основной раздел в sda3. Sda3 содержит корневой каталог «/» и все его подкаталоги, такие как /etc и /usr.
В моем Grub.cfg я установил
set root=(hostdisk//dev/sda,gpt1)
Это позволяет загрузчику найти файлы ядра до того, как любая файловая система будет готова. Технически вы загружаете sda1.
Когда ядро загружает и монтирует диски в fstab, сам корень "/" находится на sda3, но /boot (загружаемые файлы )монтируются на sda1.
linux /kernel-genkernel-x86_64-4.9.144-3 root=/dev/sda3 real_root=/dev/sda3 rootfstype=ext4
initrd /early_ucode.cpio /initramfs-genkernel-x86_64-4.9.144-3
Таким образом, несмотря на то, что система загрузилась с файлами на sda1, корень «/» действительно находится на sda3.
Это может работать, если в качестве разделителей используются пробелы:
sed 's/^ *//' text.file | cut -f1 -d" " --complement
Вы можете сделать это с помощью gnu sed
$ sed -Ee 's/\S+/\n&/2;s/.*\n//' file
Отмечаем начало второго поля и удаляем все до него.
Тот же подход, что и выше, но с использованием awk
awk '
BEGIN {
s = "[[:space:]]"; S = "[^[:space:]]"
F = S"+"s"*"
}
sub(s"*" F, "")+1
' file
Тот же подход, что и выше, но с функцией сопоставления
awk '
BEGIN {
s = "[[:space:]]"; S = "[^[:space:]]"
F = S"+"s"*"
}
match($0, F) {
$0 = substr($0, RSTART+RLENGTH)
}1
' file