我想将下面的内容改为一个更简单的术语,比如 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}'\'';'