gpt4 book ai didi

awk - 如何在 AWK 变量中存储字符串(行)

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

编写 AWK 脚本时,我想将我在变量中找到的行存储起来,只有稍后,如果我还匹配另一行,才打印出该原始行。

例子:

a    <-- save this one
b
c <-- Now that we found c, let's print a

Psudo,希望它像这样工作,代码:
/a/ { myvar = $0 }
/c/ { print $myvar $0 }

在梦境中产生:
ac

我一厢情愿的伪代码的实际迷幻结果:
cc

注意:回答“只打印 a ,然后是 c 是作弊,就像简化本示例一样。现实世界的用例要求 c 仅根据进一步的条件打印,因此需要存储最近看到的 a,以便打印以下 c

最佳答案

工作代码

/a/ { myvar = $0 }
/c/ { print myvar $0 }

想想 $作为 运算符(operator) , 获取给定的值
字段编号。

这里 myvar保持值“a”。在数字上下文中,不以数字开头的字符串被认为具有零值。因此, $myvar被视为 $"a"这是 $0
一种利用这一点的奇怪方法:
awk '/a/ {myvar = $0} /c/ {print $myvar $1}' <<END
2a
b
c d
END

会输出
dc

关于awk - 如何在 AWK 变量中存储字符串(行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24070472/

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