2016-09-09 13 views
1

私はスクリプティングが初めてで、カラム番号を動的に渡し、そのカラム値だけをすべてのレコードの定数ストリングに置き換える必要があります。awkコマンドのカラム位置を動的に渡して、特定のカラムを定数値に置き換えます。

以下は私が試したものですが、構文エラーのようです。私は2番目の部分で変数posにColumnの位置の値を渡すのに苦労しています。

は、私が何を意味するのか

第二部は「${$pos}} { ${$pos}="XXXX"}

Columnpos=3 
while read 
do 
    awk -F"|" -v OFS="|" -v pos=$Columnpos '${$pos}} { ${$pos}="XXXX"} 1' > $Outile 
done <"$InpFile" 

$[$pos]} { $[$pos]="XXXX"}のようないくつかの他のオプションが、私は同じトピックで検索しましたし、これにいくつかの関連を見つけることができる

運を試してみましたが、didnのある 私の要求に合ったものは何も見つかりません。

+0

を新しいツール/言語を使用する方法を学ぶとき、まさに構文を推測しようとしないでください:

(ノートをフォローアップのための編集) 交換は、すでにソートのやっていただけのものですかもしれない。この場合、Arnold RobbinsのEffective Awk Programming、第4版を読んでください。 –

+1

アドバイスと提案をいただきありがとうございます。 – sham

答えて

0
var=2 
awk -v "col=${var}" '{print $col}' random.file 

は私にとってはうまくいくようです。

'{$col="XXX";print}' 
+0

おかげでtomc !,あなたのコマンドはそのコラムを印刷するのに役立ちます。私は交換をしたい。私が必要とする交換をするために使用するコマンドは何ですか?それも含めることができますか?それは私が失敗している場所です – sham

+0

ありがとう、その作業。印刷コマンドがどのように機能するかに精通していませんでした。 – sham

+0

printあなたがそれを伝えます。あなたが何も言わないなら、デフォルト変数$ 0を表示します。現在の行は$ 1 $ 2 $ 3で構成されています...変数$ nの1つを変更すると、$ 0に変更が反映されます。助けてくれることを望む。 – tomc

関連する問題