1

任意の列を取得するシェル スクリプトを作成しました。スクリプトは次のとおりです。

#!/bin/sh
awk '{print $c}' c=${1:-1}

私はそれを次のように呼び出すことができます

ls -l | column 2

しかし、どうすれば複数の列に実装できますか? たとえば、次のようなものが必要です。

ls -l | column 2 3
4

3 に答える 3

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 "" }
'

列番号の区切り記号として任意の非数字を使用します (カンマやスペースなど)。

于 2013-07-26T13:59:50.107 に答える
2
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出力されます。

于 2013-07-26T13:36:37.333 に答える