使用shell脚本命令从文本中提取UUID字符串。

问题描述 投票:0回答:1

我有一个文本行为。

host_id -------------------------------------- f5f4d3e7-fdc4-49f2-b32c-13280bc7db66 (1 rows)

我想用shell脚本只提取文本中的UUID值,因为我需要在ubuntu上用这个值执行一些其他命令。我试着用 cut 命令。

cut -d '-' -f2 | cut -d '(' -f1

但无法成功指定 cut UUID字符串前后的字符。

shell parsing text uuid cut
1个回答
1
投票

使用的问题 cut -d'-' 在您的情况下是,该字段(-f)值,你将不得不添加的不是2,而是38及以上(这是连续的 - 符号),因为您的字符串中的 cut 工作。这是你将得到的输出,如果你只设置字段39(使用 cut -d'-' -f39):

f5f4d3e7

但你想要的UUID字符串中还包含了额外的连字符,所以如果你还想用这种方式来获取(使用 cut)你将不得不扩大你的字段选择,在这种情况下,通过添加 -f39-43. 但这并不能解决后面显示字符串"(1行) "的问题,所以通过运行 cut -d'-' -f39-43 你会得到这个。

f5f4d3e7-fdc4-49f2-b32c-13280bc7db66 (1 rows)

这就是为什么你用了第二个 cut 过滤器,只选取UUID值字符串。虽然这样做是可以的,但似乎使用 awk,它将在一个命令中解决所有这些问题。

cat file.txt | awk '{ print $3 }'

或者如果你的字符串不是来自于一个文件:

echo "host_id -------------------------------------- f5f4d3e7-fdc4-49f2-b32c-13280bc7db66 (1 rows)" | awk '{ print $3 }'
© www.soinside.com 2019 - 2024. All rights reserved.