0

この質問は、私の最後の質問 (テキスト ファイルの特定の行を検索し、特定の文字まで置換する) を拡張したものです。ユーザー@anubhavaの助けを借りて、dataspecsで始まる行を検索し、それを次のように変換することができました

dataspecs v1 v2 v3 v4 v5 ! blah

dataspecs $new_val ! blah

ただし、変数を保持できるようにする必要がありv1 v2 v3(実際の値はわかりません)、 andv4v5bash 変数$new_v4andに置き換えます$new_v5。したがって、私の新しい行は次のようになります。

dataspecs v1 v2 v3 new_v4 new_v5 ! blah

4

2 に答える 2

5
awk -v n4="$new4" -v n5="$new5" '/^dataspecs/{$5=n4;$6=n5}7' file
于 2013-09-22T00:00:21.970 に答える
1

ケントのソリューションは素晴らしいです。内部からシェル変数に直接アクセスすることを含む別のオプションがありますawk

awk '/^dataspecs/{$5=ENVIRON["new_v4"];$6=ENVIRON["new_v5"];}{print}' file.txt > newfile.txt
于 2013-09-22T00:08:52.867 に答える