我正在努力学习使用,awk
但它的表现并不像我期望的那样.这是我的麻烦:
$ echo "Hello brave new world" | awk "{print $1}"
Hello brave new world
Run Code Online (Sandbox Code Playgroud)
我希望看到"你好",因为这是第一个字段.为什么空格不算作字段分隔符?
rua*_*akh 26
这是因为Bash解释$1
为引用第一个shell参数,因此它将其替换为其值.因为,在您的情况下,该参数未设置,$1
只是替换为空字符串; 所以你的AWK程序实际上只是{print }
打印整行.
要阻止Bash执行此操作,请将AWK程序包装在单引号而不是双引号中:
echo "Hello brave new world" | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)
要么
echo 'Hello brave new world' | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)
echo "Hello brave new world" | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)
在awk程序周围使用单引号,否则$ 1将被转换为shell变量$ 1