awk 函数,带有要打印的列的数字参数

Dan*_*yRe 2 shell alias function

我想使用 awk 快捷方式作为函数,这样我就可以传递列号,然后打印输出。我的别名是:

alias A="| awk '{print \$1}'
alias G="| grep -i'
Run Code Online (Sandbox Code Playgroud)

代替打字:

ps -ef | grep mysql | awk 'print $2'
Run Code Online (Sandbox Code Playgroud)

我希望能够输入以下内容:

ps -ef G mysql A 2
Run Code Online (Sandbox Code Playgroud)

有什么建议么?

Mik*_*kel 5

我认为这是不可能的。基本上,别名不能接受参数 ( $1),函数不能进行宏扩展 ( |)。

我能想到的最接近的选择:

bashzsh

C() { col=$1; shift; eval "awkcmd='{ print \$$col }'"; echo "$awkcmd"; "$@" | awk "$awkcmd"; }

C 2 ps -ef G mysql
Run Code Online (Sandbox Code Playgroud)

zsh

alias -g F="| tr -s '[[:space:]]' | cut -d ' ' -f"

ps -ef G mysql F 2
Run Code Online (Sandbox Code Playgroud)