我正在尝试在.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
知道为什么会这样吗? 谢谢。
答案 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}'\'''
我的猜测是,此时你不会再得到你的解析错误了。 (当然,我不能说其余的话,因为我不知道你在使用什么作为输入。)