2017-02-03 4 views
1

を文字列の出現をすべて置き換える:awkの私は別のファイルに文字列を代入しbashスクリプトを持っているグローバル

... 
# make MC input script 
sig=2.6 
awk -v sig="$sig" '{ 
     sub(/XSIGX/, sig); 
     print; 

}' input.txt > output.txt 

私はinput.txtでこれを実行すると、私は「2.6」としてoutput.txt(通知代替品として、以下を得るが、 catラインにおけるその欠如):AWK関数sub

... 
echo "hi" >> /work/d/dfranz/o2_modeling/simulated_densities_2.6.txt 

cat /work/d/dfranz/o2_modeling/simulated_densities_2.6.txt | sort -nk1 > /work/d/dfranz/o2_modeling/simulated_rho_sorted_XSIGX.txt # <--- This XSIGX was not replaced but the first occurrence in this line was 
rm /work/d/dfranz/o2_modeling/simulated_densities_2.6.txt 
+2

AFAIK subは1つを置き換え、gsubはそれらをすべて置き換えます。あなたはgsubを試しましたか? –

+0

@GeorgeVasiliou私はgsubについて知らなかった。親切にありがとうございます。あなたが迅速な回答を投稿すれば、私は同意します。 – khaverim

答えて

2

一/最初のインスタンスを置き換えます。 subgsubに置き換えた場合は、すべてのインスタンスを置き換える必要があります。したがって、これは正常に動作するはずです:

sig=2.6 
awk -v sig="$sig" '{ 
     gsub(/XSIGX/, sig); 
     print; 

}' input.txt > output.txt 
関連する問題