印刷する列の数値引数を持つawk関数

印刷する列の数値引数を持つawk関数

関数のawkショートカットを使用して列番号を渡し、出力を印刷したいと思います。私のエイリアスは次のとおりです。

alias A="| awk '{print \$1}'
alias G="| grep -i'

次のように入力する代わりに:

ps -ef | grep mysql | awk 'print $2'

次のように入力できるようにしたいです。

ps -ef G mysql A 2

どんな提案がありますか?

ベストアンサー1

これは不可能だと思います。デフォルトでは、エイリアスは引数($1)を受け入れることができず、関数はマクロ拡張(|)を受け取ることができません。

私が考えることができる最も近いオプションは次のとおりです。

bashまたはzsh

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

C 2 ps -ef G mysql

存在するzsh

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

ps -ef G mysql F 2

おすすめ記事