awk三元运算符单行脚本构建遇语法错误求助
正确的awk三元运算符单行写法
你的脚本出现语法错误,是因为awk的?:是表达式而非语句,不能直接在分支中使用print命令。正确的写法是将三元运算符的结果作为print的参数,具体如下:
基础写法(仅输出判断结果)
awk '{print ($1 == "David" ? $1 : "Not David")}' users.txt
执行后输出:
Not David David Not David Not David Not David
保留原行内容的写法
如果需要同时显示原行信息和判断结果,可以修改为:
awk '{print $0, " → ", ($1 == "David" ? $1 : "Not David")}' users.txt
执行后输出:
John 23 Italy → Not David David 18 Spain → David Sarah 21 Germany → Not David Dan 42 Germany → Not David Brian 50 England → Not David
关键说明
awk的三元运算符语法为 condition ? 表达式1 : 表达式2,其中表达式1和表达式2必须是可求值的合法表达式(如变量、字符串常量等),而print是语句,不能放在表达式位置。因此需要将判断后的输出内容作为表达式返回,再交给print命令打印。
内容的提问来源于stack exchange,提问作者kevin
相关产品推荐
相关产品推荐

