当我将此命令粘贴到终端(ubuntu 18.04)中时:
cat file.txt | awk -F, BEGIN { OFS = FS } {if ($2 == "") $2 = last2; else last2 = $2 print}
我得到:
bash: syntax error near unexpected token `('
该如何解决?
答案 0 :(得分:3)
使用问题中的awk
命令,shell将解析每个单词和字符,并将其作为单独的脚本传递给awk
命令,而不是作为单独的脚本。而且某些字符组合在外壳中很特殊,例如括号或$2
之类的环境变量扩展。
当然这不是您想要的,而是应该将所有代码作为单个 unexpanded 字符串传递给awk
(您不希望shell尝试扩展) $2
),为此您需要用单引号将代码括起来,如
awk -F, 'BEGIN { OFS = FS } {if ($2 == "") $2 = last2; else last2 = $2 print}'