如何为 awk 命令添加别名

如何为 awk 命令添加别名

我想将下面的内容改为一个更简单的术语,比如 aprint。

 awk '{print $1}'

我做到了

alias aprint "awk \'{print $1}\'"   //But gave error ----> Missing }.

然后我给了,

alias aprint "awk \'\{print $1\}\'"  
//But gave error ----> awk: '{print , awk: ^ invalid char ''' in expression

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

答案1

您的别名存在一些问题。

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

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

你的别名如果像这样写就会起作用:

alias aprint='awk "{print \$1}"'

其中,$前面有一个,\以防止$1被壳扩展。

答案2

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

function aprint() { awk '{print $1}'; }

你可以像这样使用它:

$ date
Fri Jan  3 08:09:23 CET 2014
$ date | aprint
Fri

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

function aprint() { awk "{print \$${1:-1}}"; }

这样,它不仅可以轻松地与第一列一起使用,而且可以轻松地与任何列一起使用:

$ date | aprint 2
Jan
$ date | aprint 6
2014

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

答案3

alias somefunc='function _somefunc { ls -la ${1} |awk '\''{print $1}''\'; }; _somefunc'

别名就是这样有趣。不确定为什么要为 awk 设置别名,但如果你确实将它放在函数中并对输入进行标记。

我通常在想要标记一些输出并将其传递给其他东西时使用它,这在别名中更有用。这也可以与常规别名一起使用,只需确保使用 ; 在单个勾号之前划定别名的结尾:例如alias other='ls -la |awk '\''{print $1}'\'';'

相关内容