'<'上的awk解析错误操作者

时间:2010-11-06 04:55:26

标签: awk parse-error

我正在尝试在.alias文件中为tcsh创建一个别名。 别名是这样的:

alias do "grep -iE '<pattern>' <file> | awk '{if($2 < 0)print}'"

当我尝试运行别名时,它会给我以下错误:

awk: cmd. line:1: {if( < 0.0) print}
awk: cmd. line:1:      ^ parse error

知道为什么会这样吗? 谢谢。

2 个答案:

答案 0 :(得分:2)

试一试。您需要转义单引号,不要使用任何双引号。

alias do 'grep -iE '\''pattern'\'' filename | awk '\''{if ( $2 < 0 ) print}'\'''

答案 1 :(得分:1)

好吧,从你提供的命令行开始是乱码:

$ alias do "grep -iE '' | awk '{if($2 < 0)print}'"
bash: alias: do: not found
bash: alias: grep -iE '' | awk '{if( < 0)print}': not found

如果我按照我的意思纠正它,我会看到:

$ alias do="grep -iE '' | awk '{if($2 < 0)print}'"
$ alias do
alias do='grep -iE '\'''\'' | awk '\''{if( < 0)print}'\'''

通过这个,我们可以看到为什么你得到一个解析错误。在awk看到它之前,shell正在吃2美元。试试这个:

$ alias do="grep -iE '' | awk '{if(\$2 < 0)print}'"
$ alias do
alias do='grep -iE '\'''\'' | awk '\''{if($2 < 0)print}'\'''

我的猜测是,此时你不会再得到你的解析错误了。 (当然,我不能说其余的话,因为我不知道你在使用什么作为输入。)

相关问题