gpt4 book ai didi

bash - 如何在awk中打​​印系统命令的结果

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

我的 bash 脚本中有以下一行:

echo "foo" | awk -F"=" '{char=system("echo $1 | cut -c1");}{print "this is the result: "$char;}' >> output.txt

我想使用 awk 打印“foo”的第一个字母,这样我会得到:

this is the result: f

在我的输出文件中,但相反,我得到:

this is the result: foo

我做错了什么?谢谢

最佳答案

不,这不是 system 命令在 awk 中工作的方式。

OP 代码中发生了什么:

  • 您在 system 中给出了一个 shell 命令,这很好(在某些情况下),但是这个命令存在一个问题,您应该像 system("echo "$0"那样给出它| cut -c1") 来获取其第一个字符,并且您不需要使用变量等来保存其值并在 awk 中打印它。
  • 您正在尝试将其结果保存到变量中,但它不会有其值(系统命令的值),但有其状态。它不像此处的 awk 中的 shell 样式那样工作。
  • 因此,名为 char 的变量将具有 0 值(这是 system 命令的成功状态),并且当您打印 $char 它正在打印整行(因为在 awk 中:print $0 表示打印整行)。


您可以通过执行以下操作在单个 awk 中完成此操作:

echo "foo" | awk '{print substr($0,1,1)}'

OR 与 GNU awk 特别是:

echo "foo" | awk 'BEGIN{FS=""} {print $1}'

关于bash - 如何在awk中打​​印系统命令的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58882212/

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