2017-04-13 8 views
0

AWKを使用しているとき、$ 1は最初のフィールドを出力し、$ 2は2番目のフィールドを出力します。私は印刷のために最初に提出する必要がある拳の反復のためにforループのようにしようとしていました。awk(または)の外部ループからファイルされた値を取る方法awkでファイル番号を動的に取り込む方法は?

例1:

var="sri|ram|good|boy" for i in {1..4}{ var1=$($var|awk -F'|' -v x=$i '{print $x}'); }

私はAWKに新しいです、これが可能であるか、この上で動作する他の方法があるが、これに示唆しています。

例2:

var2="I dont know awk"; 
for i in {1..5}{ 
read inputfiled; 
echo "$var2"|awk '{print $inputfiled}'  #syntax wrong 

} がを知って印刷する必要として私はinputfiled値を与える場合、それは、Iを印刷する必要がありとしてinputfiled値を与えればここ

いずれかの回答が私を助けてくれます。

+0

http://stackoverflow.com/questions/4198138/printing-everything-ex-aw-k-first-field-with-awk –

+0

@Ed Mortonを見て、私の質問の回答が見つかりませんでした。あなたが提供したリンクの質問。 –

+0

ええ、私は質問を修正しました、それを指摘してくれてありがとう。 –

答えて

0

awkは強力なツールであり、ループをサポートします。フィールドの合計数にポイント -

sri 
ram 
good 
boy 

NF

var="sri|ram|good|boy" 
echo $var | awk -F'|' '{for(i=1;i<=NF;i++) print $i}' 

出力:あなたの簡単なケースでは、次のようなアプローチを適用するのに十分だろう。

+0

うん、ここでは$ 1,2,3 ... awkループの中から値を得ることはできますが、同じ方法で外部ループから$ iの値を与えることはできませんか? –

+0

@SriramP、最終出力をどのように正確に表示するかを示します – RomanPerekhrest

0

別楽しい方法:

$ echo $var | awk -F\| -v OFS='\n' '{$1=$1}1' 
sri 
ram 
good 
boy 

$1 = $1はライン入力ファイルセパレータ(FS)を置き換える出力ファイルセパレータ(OFS)を用いて再構築されるようにします。末尾の1は、行を印刷します(実際に解決されるパターンで、行を印刷するデフォルトのアクションを引き起こします)。

関連する問題