fstabからすべてのUUIDを削除しますが、ファイルシステムを起動したUUIDを削除する方法

fstabからすべてのUUIDを削除しますが、ファイルシステムを起動したUUIDを削除する方法

次のサンプルファイルでは、単語を含む行を除いて、で始まるすべてのfstab行を削除しようとしていますUUIDUUIDboot

/dev/mapper/VG100-lv_root /                       xfs     defaults        0 0
UUID=735cb76a-51b5-4e06-b6fb-3b9577e38dc5 /boot                   xfs     defaults        0 0
/dev/mapper/VG100-lv_var /var                    xfs     defaults        0 0


UUID=0b14011d-f69d-4c4c-8ce0-6240bb0a574a   /var/kafka/mp1                      xfs defaults,noatime 0 0
UUID=2d7872f2-96d4-4ba9-8a17-a1115542645c   /var/kafka/mp2                      xfs defaults,noatime 0 0
UUID=79bdbf56-9a09-4505-ab8e-41ce9432cf0f   /var/kafka/mp3                      xfs defaults,noatime 0 0
UUID=ca42a388-83d4-4f8b-aff7-3450d836eef7   /var/kafka/mp4                      xfs defaults,noatime 0 0
UUID=62d356bb-c393-4a74-bbf9-984b60d3b5c4   /var/kafka/mp5                      xfs defaults,noatime 0 0
UUID=d4071a83-204f-475f-8917-cdd77ef6b1ed   /var/kafka/mp6                      xfs defaults,noatime 0 0

したがって、例外の結果は次のようになります。

/dev/mapper/VG100-lv_root /                       xfs     defaults        0 0
UUID=735cb76a-51b5-4e06-b6fb-3b9577e38dc5 /boot                   xfs     defaults        0 0
/dev/mapper/VG100-lv_var /var                    xfs     defaults        0 0

これまでのところ、私たちは次のsedを持っています

 sed -i '/^UUID/d'  /etc/fstab

UUIDしかし、上記の方法はすべての行を削除します

ベストアンサー1

UUID=最初のフィールドがで始まり、2番目のフィールドがそうでない行を削除したいようです/boot

したがって、awkPerlのawkモードは確実な選択のように見えます。

awk '! ($1 ~ /^UUID=/ && $2 != "/boot")' /etc/fstab

(GNU awkは内部編集に使用できます-i /usr/share/awk/inplace.awk)。

perl -lae 'print unless $F[0] =~ /^UUID=/ && $F[1] ne "/boot"' /etc/fstab

(内部編集perl用)。-i

以下を使用して同じことを実行できますsed

sed '/^[[:space:]]*[^[:space:]]\{1,\}[[:space:]]\{1,\}/boot\([[:space:]].*\)\{0,1\}$/b
     /^[[:space:]]*UUID=/d' /etc/fstab

一部は(most)または(Macosを含むFreeBSDとその派生)を使用してsedその場所で編集できます。-i-i ''


^使用しないでください-i inplace現在の作業ディレクトリから最初に拡張機能をgawkロードしようとすると、誰かがそのディレクトリにマルウェアを植えた可能性があります。システムに付属の拡張プログラムのパスは異なる場合があります。出力を参照してください。inplaceinplaceinplace.awkinplacegawkgawk 'BEGIN{print ENVIRON["AWKPATH"]}'

おすすめ記事