如何使用perl one-liner作为别名

时间:2013-08-30 06:20:25

标签: perl shell solaris tcsh uniq

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

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

然而,当我试图将其作为别名并且这样做时,它没有按预期工作

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

错误如下

   a: Undefined variable.

在SunOS操作系统中使用tcsh shell

2 个答案:

答案 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