私が取り組んでいる問題の縮小版です。awkでbashの展開変数を使用
私は情報を取得し、 "c"という名前のbash変数に格納するためにbashを使用しています。
echo {1..3}
1 2 3
echo \${1,2,3}
$1 $2 $3
c=$(echo \${1,2,3})
echo $c
$1 $2 $3
今、私はawkの文の中の変数「c」を使用したいが、知りたいと思ったことさえ可能であるか、私ははるかに現実から考えています。
echo a b c d e f g h |awk -v c=$"(echo \${1,2,3})" '{print c}'
(echo ${1,2,3}) #This is not expected, instead a b c was.
または
echo a b c d e f g h |awk -v c="$(echo \${1,2,3})" '{print c}'
$1 $2 $3
私はawkの内部ループで使用してこれを行うことができます知っています。しかし私の要求では、私が関心のある列番号は完全にランダムなので、ループを使用することはできませんでした。これは、次の方法を使用できないようにします。同様
この
echo a b c d e f g h |awk '{print $1,$2,$3}'
a b c
またはこのような
:echo a b c d e f g h |awk '{for(i=1;i<=3;i++) printf "%s ", $i}'
a b c
クエリ:
が知りたい場合は、その可能性のすべての列番号を格納することリスト/配列/変数とスロー彼らはawkで印刷するのですか?
注:
これは元のデータの実際の縮小版です。
'c = $"(echo \ $ {1,2,3}) "'は '(echo $ {1,2,3})'を与えてください。 [これは間違いありません。](http://wiki.bash-hackers.org/syntax/quoting#i18nl10n) – anishsane
なぜですか?あなたは '1'と' 3'をawkに渡し、awkをその範囲内の値のリストに展開することができます。 –
ランダムですが、時には1〜3、6,7,8,10,12,13,14 .....です。だから私は、他の人がコードを維持するために、awk本文のリストからこれらの列番号をリストする必要があります。 –