sed – 用于从blkid程序的输出中过滤UUID的工具(使用grep,cut或a
发布时间:2020-12-14 02:20:13 所属栏目:Linux 来源:网络整理
导读:我想过滤blkid的输出以获取UUID. blkid的输出看起来像 情况1:- $blkid/dev/sda2: LABEL="A" UUID="4CC9-0015"/dev/sda3: LABEL="B" UUID="70CF-169F"/dev/sda1: LABEL=" NTFS_partition" UUID="3830C24D30C21234" 在某些情况下,blkid的输出看起来像 案例2:
我想过滤blkid的输出以获取UUID.
blkid的输出看起来像 情况1:- $blkid /dev/sda2: LABEL="A" UUID="4CC9-0015" /dev/sda3: LABEL="B" UUID="70CF-169F" /dev/sda1: LABEL=" NTFS_partition" UUID="3830C24D30C21234" 在某些情况下,blkid的输出看起来像 案例2: – $blkid /dev/sda1: UUID="d7ec380e-2521-4fe5-bd8e-b7c02ce41601" TYPE="ext4" /dev/sda2: UUID="fc54f19a-8ec7-418b-8eca-fbc1af34e57f" TYPE="ext4" /dev/sda3: UUID="6f218da5-3ba3-4647-a44d-a7be19a64e7a" TYPE="swap" 我想过滤掉UUID. 使用grep和cut的组合可以完成 /sbin/blkid | /bin/grep 'sda1' | /bin/grep -o -E 'UUID="[a-zA-Z|0-9|-]*' | /bin/cut -c 7- 我已经尝试使用awk,grep和cut如下过滤U??UID $/sbin/blkid | /bin/grep 'sda1' | /usr/bin/awk '{print $2}' | /bin/sed 's/"//g' | cut -c 7- 7ec380e-2521-4fe5-bd8e-b7c02ce41601 上述命令(使用awk)是不可靠的,因为有时在blkid程序的输出中可能存在诸如LABEL的额外字段,如上面的输出所示. 使用可靠工作的awk创建命令的最佳方法是什么? 注意: – 我正在使用busybox blkid,其中/ dev / sda1不能作为args传递(我正在使用的版本不支持它)因此grep过滤该行. 更新: – 添加了CASE 2:-output以显示无法依赖字段位置. 解决方法
对于所有UUID,您可以:
$blkid | sed -n 's/.*UUID="([^"]*)".*/1/p' d7ec380e-2521-4fe5-bd8e-b7c02ce41601 fc54f19a-8ec7-418b-8eca-fbc1af34e57f 6f218da5-3ba3-4647-a44d-a7be19a64e7a 比方说,只针对特定的sda1: $blkid | sed -n '/sda1/s/.*UUID="([^"]*)".*/1/p' d7ec380e-2521-4fe5-bd8e-b7c02ce41601 sed命令尝试对UUID关键字后双引号内的内容进行分组,并用令牌替换整行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |