gpt4 book ai didi

AWK 为 sub/gsub 返回数字而不是字符串

转载 作者:行者123 更新时间:2023-12-04 03:02:59 24 4
gpt4 key购买 nike

我正在解析命令的输出,例如:

0. BP-726162639-172.16.2.40-1425055855614:blk_1724943006_651672912 len=39498 Live_repl=3 [DatanodeInfoWithStorage[172.16.2.168:50010,DS-fbfe96c7-82c7-4be3-b056-5a74b3fa2f4b,DISK], DatanodeInfoWithStorage[172.16.2.170:50010,DS-5459e7a0-2874-4a84-b4a4-e7fc84be391f,DISK], DatanodeInfoWithStorage[172.16.2.162:50010,DS-86792af4-6db8-478a-97c7-2b6560f2cc19,DISK]]

第一个子程序按预期工作,但之后的子程序失败:

awk '{print "block # : " gsub(/\./,"",$1) $2 " :: " sub(/len=/,"a",$3) " :: " $4}'

这打印:

block # : 1BP-726162639-172.16.2.40-1425055855614:blk_1724943006_651672912 :: 1 :: Live_repl=3

我不确定为什么会这样。使用多个 sub 不好吗?

在理解@ken 的回答后,很明显我需要在开始时进行替换,然后在打印中稍后使用 $1 $2 等。

最佳答案

gsubsub 都适用于您的代码。

这两个函数将进行替换,并返回计数,即完成了多少次替换。 (不是替换后的字符串)。

因此 BP-... 之前的 1 来自 gsub1 位于 之间>:: s,来自sub()

关于AWK 为 sub/gsub 返回数字而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47451008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com