要过滤不连续的文件行,以下单行工作正常:
cat filename | perl -ane 'print unless $a{$_}++'
但是,当我尝试将其作为别名并执行时,它没有按预期工作
alias uniqlines " cat \!* | perl -ane 'print unless \$a{\$_}++' "
错误如下
a: Undefined variable.
为 SunOS 操作系统使用 tcsh shell
在 bash 中,此语法有效:
alias uniqlines="perl -ane 'print unless \$a{\$_}++' "
这是一种即使在 tcsh 中似乎也有效的方法:
alias uniqlines 'perl -ane '"'"'print unless $a{$_}++'"'"' '
您想改用函数:
uniqlines(){ cat "$@" | perl -ane 'print unless $a{$_}++'; }
但这几乎只是一种花哨的说法:
alias uniqlines=uniq