如何给 awk 命令取别名

Roy*_*ion 12 linux

我想将下面的别名变成一个更简单的术语,比如 aprint。

 awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)

我做了

alias aprint "awk \'{print $1}\'"   //But gave error ----> Missing }.
Run Code Online (Sandbox Code Playgroud)

然后我给了,

alias aprint "awk \'\{print $1\}\'"  
//But gave error ----> awk: '{print , awk: ^ invalid char ''' in expression
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决这个问题,请帮助...

gar*_*ohn 12

您的别名有几个问题。

首先,别名的名称与其值之间由 分隔=,而不是空格。

其次, a'不能通过用 a 转义来嵌套在其他引号中\

如果这样写,您的别名将起作用:

alias aprint='awk "{print \$1}"'
Run Code Online (Sandbox Code Playgroud)

其中 the$前面是 a\以防止$1被 shell 扩展。


jan*_*nos 6

比 an 更好alias,为这种事情创建一个函数:

function aprint() { awk '{print $1}'; }
Run Code Online (Sandbox Code Playgroud)

你可以像这样使用它:

$ date
Fri Jan  3 08:09:23 CET 2014
$ date | aprint
Fri
Run Code Online (Sandbox Code Playgroud)

您可能也想对其进行参数化:

function aprint() { awk "{print \$${1:-1}}"; }
Run Code Online (Sandbox Code Playgroud)

这样,它不仅可以轻松处理第一列,还可以轻松处理任何列:

$ date | aprint 2
Jan
$ date | aprint 6
2014
Run Code Online (Sandbox Code Playgroud)

使用${1:-1}参数是可选的,默认情况下它将使用 1。