Как удалить столбец из файла без изменения формата?

Как у меня в системе, на /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.

1
30.06.2020, 19:20
2 ответа

Это может работать, если в качестве разделителей используются пробелы:

sed 's/^ *//' text.file | cut -f1 -d" " --complement
3
18.03.2021, 23:23

Вы можете сделать это с помощью 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 
2
18.03.2021, 23:23

Теги

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