作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 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/
我是一名优秀的程序员,十分优秀!