アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
gawkを使用しているのですが、

File1.dat File2.dat ・・・といった固定フィールドで行数は同一の2つ以上のファイルから特定のフィールドをそれぞれ抜き出し、1つのファイルへ出力する といったスクリプトの作成方法が分からず困っています。

ex--File1.datの$1と$3
1996 1 2
1996 1 3
1996 1 4

ex--File2.datの$4
90 500 11 33 0
94 445 18 71 0
85 512 29 68 0

ex--hoge.out
1996 2 33
1996 3 71
1996 4 68

いままで1つのファイルから切り出ししかせず勉強不足もあってお手上げ状態です。どなたかご存知の方いらっしゃいましたら宜しくお願いします。

A 回答 (2件)

No.1です。

うまくいきませんでしたか…。私の環境ではうまくいったのですが。

こういう方法はいかがでしょうか。
paste File1.dat File2.dat | gawk '{print $1,$3,$7}' > hoge.out

この回答への補足

度々とんでもない恥ずかしい勘違いをしておりました。

File1.dat(フィールド数)File2.dat(フィールド数)
連続のフィールドとして扱えば解決しました、どうもありがとうございます。

補足日時:2007/01/16 23:22
    • good
    • 2
この回答へのお礼

ありがとうございます、出力できました。
こちらの方法では 1番目のファイルのフィールド数が2番目ファイルのフィールド数より少ない事が前提のようですね。
どうにかしてフィールド数が同じ場合や入力順番が逆の場合でも動作するよう工夫してみます。

お礼日時:2007/01/16 23:15

gawk '{n1=$1;n2=$3;getline < "File2.dat";n3=$4;print n1,n2,n3}' File1.dat > hoge.out



でいかがでしょうか。

この回答への補足

失礼しました、先に書いた実行結果は間違いです。
1996 2
1996 3
1996 4

補足日時:2007/01/16 21:46
    • good
    • 0
この回答へのお礼

ご意見ありがとうございます。
一旦変数に投げる形は私も試したのですが、出力結果が片方のファイル(ham_kamo様の例の場合File1.dat)のフィールドのみ抽出されてしまうようです。

実行結果--hoge.out
90 11 33
94 18 71
85 29 68

お礼日時:2007/01/16 21:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!