• ベストアンサー

CSVから削除リストとID一致する行の削除方法

店舗リストshoplist.csv [ id/店名/住所... ]約3,000件の中から、 削除リストdelshop.csv [ id ]約100件にid一致する行を削除したいです。 文字コードがutf-8のためエクセル以外で処理する方法は何が良いでしょうか? スプレッドシート でGASも考えましたが、途中でタイムアウトになってしまいそうなので他の方法にしたいのですが思いつけません。 ご多用のところ恐れ入りますが、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

少し工夫が必要です。 下記は一例です。 ※それぞれのファイルの中身 [user@host ~]$ cat shoplist.csv 1,neko,tokyo 2,inu,osaka 3,nezumi,yokohama 4,uma,fukuoka 5,ushi,sapporo 6,buta,nagoya 7,tori,hiroshima [user@host ~]$ cat delshop.csv 2 4 5 [user@host ~]$ ※コマンドと出力 [user@host ~]$ grep -v "[`cat delshop.csv | xargs`]" shoplist.csv 1,neko,tokyo 3,nezumi,yokohama 6,buta,nagoya 7,tori,hiroshima [user@host ~]$ 以上です。

roid_moon
質問者

お礼

こちらで解決できました。 丁寧に解説してくださいってありがとうございました。 #!/bin/bash while read line do echo $line sed -i -e "/$line/d" shoplist.csv done < delshop.csv

roid_moon
質問者

補足

すみません、せっかく教えていただきましたが、Macのターミナルでは各ファイルの中身は取得できましたが、コマンドと出力の部分は何の反応もありませんでした。 残念ですが私のスキルでは太刀打ちできないようです。 お手数おかけしました

その他の回答 (1)

回答No.1

シェルスクリプトなら瞬殺ですね。 詳細な要求仕様は分かりませんが、 書いてあることが全てなら、 grep -v の一行で解決しそうです。 windowsでシェルスクリプトを使うには いろいろ方法がありますが、 確実なのはvirtualboxでPC-unixを入れることでしょうか。

roid_moon
質問者

補足

アドバイスありがとうございます。 恥ずかしながらシェルスクリプトという言葉は聞いたことがありますが、全く触れたことがありませんでした。 当方Macなので、調べてみたらターミナルで実行できるのですね。 grep -v (path)delshop.csv (path)shoplist.csv で実行してみたのですが、 結果はターミナル上にshoplist.csvの中身が表示されただけで終わってしまいました。 delshop.csvにはIDのみ書かれていて、shoplist.csvでIDが一致する行を削除したファイルを別名保存したいのですが、どのように書けば良いかアドバイスいただけないでしょうか?

関連するQ&A