cshell alias awk

这里有一个比较复杂的alias in cshell,如下:

alias dxxx 'dssc ls \!:1 | egrep " 1\.[0-9]+ " | awk '\''{print $3}'\'' | xargs dssc co -get \!:1 -v'

使用时:

dxxx a_file_name

 

有几点语法:

1)如何让alias取到命令后的参数,就是使用时dxxx后面的a_file_name?这时候要使用 \!:1

\!:1    表示第一个参数

\!:2*  表示第二个和余下的所有参数

\!*     表示所有参数

 

2)如何让awk的 单引号 '  起作用

如果不用alias,命令可以是这样的:

dssc ls a_file_name | egrep " 1\.[0-9]+ " | awk '{print $3}' | xargs dssc co -get a_file_name -v

如果用了alias,这时候 alias的单引号和 awk的单引号冲突,在alias中,awk命令还是简单一个单引号,这个alias就有语法错误。

这时候一个单引号 ' 变成了这样 '\'' , 需要加一个转义的双引号。

 

3) 这里的xargs作用是把上面一个命令的输出作为后面命令的参数。

很多命令不支持管道来传递参数,而日常工作中有这个必要,所以就有了xargs命令

 

4)至于egrep里面的正则表达式,就不讲解了。

posted @ 2022-05-07 17:24  颀成  阅读(445)  评论(0)    收藏  举报