shell – 为什么awk打印整行而不是第一个字段?

我正在尝试学习使用awk,但它并没有表现我的期望。这是我的麻烦:
$ echo "Hello brave new world" | awk "{print $1}"
Hello brave new world

我期待看到“你好”,因为这是第一个领域。为什么空格不算作字段分隔符?

这是因为Bash将$ 1解释为引用第一个shell参数,所以它用它的值替换它。因为在你的情况下,该参数是未设置的,所以$ 1只是被替换为空字符串;所以你的AWK程序实际上只是{print},打印整个行。

为了防止Bash执行此操作,请将AWK程序以单引号代替双引号:

echo "Hello brave new world" | awk '{print $1}'

要么

echo 'Hello brave new world' | awk '{print $1}'

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...