複数のawk関数の組み合わせ

複数のawk関数の組み合わせ

複数のファイルを修正しています。これら3つのawk関数を1つのコードに結合したいと思います。

for i in *.gw; do
awk '/ALPHA_BF :/{sub(/^ *[0-9.]+/,"        #J     #")};{print}' $i > $i.tpl
done

for i in *.gw; do
awk '/REVAPMN:/{sub(/^ *[0-9.]+/,"        #G     #")};{print}'$i> $i.tpl
done

for i in *.gw; do
awk '/GW_REVAP :/{sub(/^ *[0-9.]+/,"        #I     #")};{print}' $i > $i.tpl
done

ベストアンサー1

for file in ./*.gw; do
    awk '
        /ALPHA_BF :/{sub(/^ *[0-9.]+/,"        #J     #")}
        /REVAPMN:/  {sub(/^ *[0-9.]+/,"        #G     #")}
        /GW_REVAP :/{sub(/^ *[0-9.]+/,"        #I     #")}
        { print }' "$file" > "$file.tpl"
done

変電所セクションの単一機能を定義できます。

for file in ./*.gw; do
    awk 'function do_sub(r) { sub(/^ *[0-9.]+/, "        #"r"     #") }
        /ALPHA_BF :/{ do_sub("J") }
        /REVAPMN:/  { do_sub("G") }
        /GW_REVAP :/{ do_sub("I") }1
    ' "$file" > "$file.tpl"
done

おすすめ記事