awkスクリプトの出力を既存のファイルに新しいフィールドとして毎回表示する方法はありますか?Awk:既存ファイルの新しいフィールドに出力を追加
こんにちは! 私はawkで非常に新しいです(私の用語は正しくないかもしれません、それについてはごめんなさい!)、私は数百のファイルを同じファイルに、異なるフィールドで操作するスクリプトの出力を印刷しようとしています。
例えば、私のデータファイルは、この構造を持っている:
#File1
1
Values, 2, Hanna
20
15
Values, 2, Josh
30
56
Values, 2, Anna
50
70
#File2
2
Values, 2, Hanna
45
60
Values, 2, Josh
98
63
Values, 2, Anna
10
56
私は、同じ名前が、異なる値を使用して、番号の月で分割され、これらのファイルのいくつかを持っています。私のスクリプトで
#Hanna
20 45
15 60
#Josh
30 98
56 63
#Anna
50 10
70 56
、私は言葉「値」を検索し、印刷に記録するかを決定:私はそうのように、月によって人物の名前で命名されたファイル、およびフィールドの値をしたいです(「値」の後の数字に基づいて)。これは正常に動作します。次に、これらの値を印刷します。
Print $0 > name
#このvarible名前は私が= $ 3このは正しく「ハンナ」、「ジョシュ」と "という3つのファイルが作成されます
正しい行であることが保存されている:それはコマンドを使用して、一つのファイルのために正常に動作しますアンナ "、それらの値と。しかし、私はすべての自分のデータファイルに対してスクリプトを実行し、それらを新しいフィールドの1つの "Hanna"ファイルなどに追加したいと思います。
それでは、私が探していることは「月に対応するフィールドにレコードを印刷する」
のように読み出す、print $0 > $month name
のようなもので、私は解決策を見つけることを試みたが、ほとんどのソリューションは、単に一時的なペーストのいずれかファイルをまとめたり、既存のものの後ろに値を追加したりします(すべてがフィールド1になるようにします)。私は一時ファイルを避け、別のフィールドに(私は一種の行列構造を得るために)持っていたいです。
ありがとうございます!
ありがとうございます!私は上記のJosh-typoを修正しました。 しかし、私はawkにとって非常に新しいので、私はあなたのソリューションを実装する方法を本当に理解していませんか?私はそれを構文BEGIN {....}を持つtxtファイルに書いていますし、awk -f script.txt data1.dataを端末から書き出して実行しています。自分のコードを自分のtxtファイルまたは端末に書き込むべきですか?申し訳ありませんが、もっと分かりませんが、私はこれが '>'と '$'の単純な組み合わせで解決できると思いました。Pあなたを大変困らせて申し訳ありません。 –
クール、私はこの1つの説明を追加し、学習、共有を続けて:)編集:あなたも端末でそれを実行することができます、あなたはBASHスクリプトを作成し、それから実行することもできますし、それに少し変更を加えることで、それがあなたのためにどうなるかを教えてください。 – RavinderSingh13
うわー、これは(種類の)作品です! (そして、残りのコードは冗長なhahaにしました)。本当にありがとう!しかし、私はこれが少し不明であることを今見ている。名前によれば、私は3つの異なるファイルに出力を保存したいと思います。したがって、 "Anna"というタイトルのファイルには、Annaの4つの数字、Joshの数字などを含むファイル "Josh"などが含まれているはずです。私の元のコードでは、シーケンスの最後に[>名前]がありましたが、今ではすべての値をAnnaに保存します。 –