2

要过滤不连续的文件行,以下单行工作正常:

cat filename | perl -ane 'print unless $a{$_}++'

但是,当我尝试将其作为别名并执行时,它没有按预期工作

alias uniqlines " cat \!* | perl -ane 'print unless \$a{\$_}++' "

错误如下

   a: Undefined variable.

为 SunOS 操作系统使用 tcsh shell

4

2 回答 2

2

在 bash 中,此语法有效:

alias uniqlines="perl -ane 'print unless \$a{\$_}++' "

这是一种即使在 tcsh 中似乎也有效的方法:

alias uniqlines 'perl -ane '"'"'print unless $a{$_}++'"'"' '
于 2013-08-30T06:29:42.903 回答
0

您想改用函数:

uniqlines(){ cat "$@" | perl -ane 'print unless $a{$_}++'; }

但这几乎只是一种花哨的说法:

alias uniqlines=uniq
于 2013-08-30T06:26:33.160 回答