要过滤非连续的文件行,下面的单行工作正常:
cat filename | perl -ane 'print unless $a{$_}++'
然而,当我试图将其作为别名并且这样做时,它没有按预期工作
alias uniqlines " cat \!* | perl -ane 'print unless \$a{\$_}++' "
错误如下
a: Undefined variable.
在SunOS操作系统中使用tcsh shell
答案 0 :(得分:2)
在bash中,这种语法有效:
alias uniqlines="perl -ane 'print unless \$a{\$_}++' "
这种方法即使在tcsh中似乎也能正常工作:
alias uniqlines 'perl -ane '"'"'print unless $a{$_}++'"'"' '
答案 1 :(得分:0)
您想要改为使用函数:
uniqlines(){ cat "$@" | perl -ane 'print unless $a{$_}++'; }
但这只是一种奇特的说法:
alias uniqlines=uniq