任意の列を取得するシェル スクリプトを作成しました。スクリプトは次のとおりです。
#!/bin/sh
awk '{print $c}' c=${1:-1}
私はそれを次のように呼び出すことができます
ls -l | column 2
しかし、どうすれば複数の列に実装できますか? たとえば、次のようなものが必要です。
ls -l | column 2 3
awk -v c="3,5" '
BEGIN{ split(c,a,/[^[:digit:]]+/) }
{ for(i=1;i in a;i++) printf "%s%s", (i==1?"":OFS), $(a[i]); print "" }
'
列番号の区切り記号として任意の非数字を使用します (カンマやスペースなど)。
ls -l | nawk -v r="3,5" 'BEGIN{split(r,a,",")}{for(i in a)printf $a[i]" ";print "\n"}'
r
これで、シェルスクリプトで変数を変更して渡すことができます。または、シェルスクリプトで構成して使用できますr=$your_list_var
数値が存在するフィールドは$your_list_var
、awk コマンドによって出力されます。上記の例では、出力の 3 番目と 5 番目のフィールドがls -l
出力されます。