dポイントプレゼントキャンペーン実施中!

$ cat rm_category.txt
2017102005195200000000871
2017102005195700000005202
2017102005562200000004352
2017102005195200000000872

上記のようなリストファイルがあります。

もう一つファイルがあり、そのファイル内のフィールドセパレーターを,にし、$2と上記リストで一致しない行だけ抽出したいです。


rm_category.txt内の値はユニークになっていますが、もう一つのファイルの$2はユニークになっていない状況で重複があります。


どなたか知恵を貸して頂けないでしょうか。
よろしくお願いいたします。

A 回答 (3件)

それなら、-F,でデリミターを,に設定して、2つ目のファイルの2フィールド目の文字列を$2で拾えばいいと思う。



awk -F, '{A=$1;getline < "file2";if(A != $2) print A, $2} file1



基本的にこういう考え方でできるはずなので、ちょっと自分で考えてみてください。
    • good
    • 1
この回答へのお礼

ありがとうございました。
解決しました!

お礼日時:2019/11/19 16:32

2つ目のファイル内のフィールドセパレータというのがよくわかりませんが(一行に複数の文字列がある??)、それを無視するならたとえば



awk '{A=$1;getline < "file2";if(A != $1) print A, $1} file1

とかでどうですか?


Awkは普段使わないのであまりいいやり方ではないかもしれませんが。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

2つ目のファイルは下記のようになっています。
20190515091158,,軟水器,,22,1,1,1,ct00906,N
2018071906562200000000011,,軟水器・浄水器,,16,1,1,1,ct00907,N
2019020605192100000000022,2018071906562200000000011,浄水器,,31,1,1,1,ct00908,N
2019110608524500000058932,2018071906562200000000011,軟水器,,33,1,1,1,ct00909,N
2019022108191600000010551,,配膳車・下膳車,,21,1,1,1,ct00910,N


,で区切られた2つ目のフィールドと比較をし一致しない行のみ出力したいです。

お礼日時:2019/11/13 17:42

awkじゃなきゃいけないんですか?


sdiff -sなら簡単にできますが。
    • good
    • 0
この回答へのお礼

今後の事を考えてawkが便利かなと思っています。
知識を付ける意味でもawkでしたいです<(_ _)>

お礼日時:2019/11/13 16:37

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