sed – 用于从blkid程序的输出中过滤UUID的工具(使用grep,cut或awk,e.t.c)

sed – 用于从blkid程序的输出中过滤UUID的工具(使用grep,cut或awk,e.t.c),第1张

概述我想过滤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的输出看起来 我想过滤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 }' | /bin/sed 's/\"//g' | cut -c 7-7ec380e-2521-4fe5-bd8e-b7c02ce41601

上述命令(使用awk)是不可靠的,因为有时在blkID程序的输出中可能存在诸如LABEL的额外字段,如上面的输出所示.

使用可靠工作的awk创建命令的最佳方法是什么?
如果任何其他优雅的方法使用bin和core utils退出作业,请发布.我不想使用perl或python,因为这必须在busyBox上运行.

注意: – 我正在使用busyBox blkID,其中/ dev / sda1不能作为args传递(我正在使用的版本不支持它)因此grep过滤该行.

更新: – 添加了CASE 2:-output以显示无法依赖字段位置.

解决方法 对于所有UUID,您可以:
$blkID | sed -n 's/.*UUID=\"\([^\"]*\)\".*//p' d7ec380e-2521-4fe5-bd8e-b7c02ce41601fc54f19a-8ec7-418b-8eca-fbc1af34e57f6f218da5-3ba3-4647-a44d-a7be19a64e7a

比方说,只针对特定的sda1:

$blkID | sed -n '/sda1/s/.*UUID=\"\([^\"]*\)\".*//p' d7ec380e-2521-4fe5-bd8e-b7c02ce41601

sed命令尝试对UUID关键字后双引号内的内容进行分组,并用令牌替换整行.

总结

以上是内存溢出为你收集整理的sed – 用于从blkid程序的输出中过滤UUID的工具(使用grep,cut或awk,e.t.c)全部内容,希望文章能够帮你解决sed – 用于从blkid程序的输出中过滤UUID的工具(使用grep,cut或awk,e.t.c)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1033110.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存