単純な awk ラッパー関数またはエイリアス

単純な awk ラッパー関数またはエイリアス

私は人々がbashエイリアスやawkベースの関数を使用しているのを見て、その単純さが好きですが(bashで)それを実装する方法を覚えていません。

列3、4、7を選択する必要がある大きな形式のファイルがあるとします。

これを行うには、次のようにします。

cat bigfile.txt | awk '{print $3, $4, $7}' |less

次のように使用できるエイリアス(または関数)Pawkが必要です。

cat bigfile.txt | pawk 3,4,7 | less

同じ効果を得るために。列数は任意で、NFを含めることができます。これを達成するためにいくつかの方法を試しましたが、任意の数の変数をawkに渡す方法はわかりません。

ベストアンサー1

次の機能を使用できます。

function pawk(){
  awkString="{print "

  for var in "$@"
  do
    awkString+=" \$$var"
  done

  awkString+=" }"

  awk "$awkString"
}

例:

cat bigfile.txt | pawk 3 4 7 | less

おすすめ記事