Sed 如何在/etc/fstab文件中找到字符串boot并用内核设备名/dev/sda1替换UUID?
如何在/etc/fstab文件中找到字符串boot并用内核设备名/dev/sda1替换UUIDSed 如何在/etc/fstab文件中找到字符串boot并用内核设备名/dev/sda1替换UUID?,sed,Sed,如何在/etc/fstab文件中找到字符串boot并用内核设备名/dev/sda1替换UUID cat /etc/fstab /dev/mapper/vg00-root / xfs defaults 0 0 UUID=6fc6605f-796e-4e0b-a8f7-8b339c46b1a9 /boot xfs defaults 0 0 /dev/mapper/vg00-
cat /etc/fstab
/dev/mapper/vg00-root / xfs defaults 0 0
UUID=6fc6605f-796e-4e0b-a8f7-8b339c46b1a9 /boot xfs defaults 0 0
/dev/mapper/vg00-tmp /tmp xfs defaults 0 0
/dev/mapper/vg00-var /var xfs defaults 0 0
/dev/mapper/vg00-crash /var/crash xfs defaults 0 0
/dev/mapper/vg00-log /var/log xfs defaults 0 0
/dev/mapper/vg00-swap swap swap defaults 0 0
sed 's/UUID/\/dev\/sda1/g' /etc/fstab
按uuid列出/dev/disk/下的文件:
ls -l /dev/disk/by-uuid/
…为了得到这样的东西:
lrwxrwxrwx 1 root root 10 ott 4 18:37 53bc3708-e45d-4352-977a-a62c6a4fd5c8 -> ../../dm-1
lrwxrwxrwx 1 root root 10 ott 4 18:37 6a23dfcf-e36d-45c8-a468-d3976b5239f3 -> ../../dm-0
lrwxrwxrwx 1 root root 10 ott 4 18:37 7d6e75e9-7ed2-4412-8acd-2de50ffa0034 -> ../../sda1
如您所见,您可以在输出的右侧找到老式的设备名称,作为链接目标
在uplevel目录中,您可以找到按id和路径分类的磁盘,而不仅仅是按uuid分类的磁盘。漂亮 我假设您想要为
/dev/sda1/
替换UUID=6fc6605f-796e-4e0b-a8f7-8b339c46b1a9
,这通常是个坏主意。UUID是属于磁盘的唯一id。如果要更换磁盘,我建议尝试使用blkid
获取UUID
否则,应扩展正则表达式以替换该部分:
$ sed 's/UUID=6fc[^ ]*/\/dev\/sda1/g' fstab
请注意,您已经添加了
6fc
,以确保不会更改每一行UUID=
。那么,什么不起作用?请参阅,您的代码将UUID
替换为/dev/sda1
@WiktorStribiżew可能只在行包含引导时才希望更改UUID
如何在/etc/fstab文件中找到字符串boot并替换UUID
然后,可能是sed'/\/boot/{s,UUID,/dev/sda1,}'/etc/fstab
,另请参见以避免使用\/
您要求的内容与已接受的解决方案不相关,因此,我建议在不清楚的情况下结束这个问题。