- ベストアンサー
CSVから削除リストとID一致する行の削除方法
店舗リストshoplist.csv [ id/店名/住所... ]約3,000件の中から、 削除リストdelshop.csv [ id ]約100件にid一致する行を削除したいです。 文字コードがutf-8のためエクセル以外で処理する方法は何が良いでしょうか? スプレッドシート でGASも考えましたが、途中でタイムアウトになってしまいそうなので他の方法にしたいのですが思いつけません。 ご多用のところ恐れ入りますが、よろしくお願いいたします。
- みんなの回答 (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 ~]$ 以上です。
その他の回答 (1)
- Ultra-Hetare
- ベストアンサー率38% (204/526)
シェルスクリプトなら瞬殺ですね。 詳細な要求仕様は分かりませんが、 書いてあることが全てなら、 grep -v の一行で解決しそうです。 windowsでシェルスクリプトを使うには いろいろ方法がありますが、 確実なのはvirtualboxでPC-unixを入れることでしょうか。
補足
アドバイスありがとうございます。 恥ずかしながらシェルスクリプトという言葉は聞いたことがありますが、全く触れたことがありませんでした。 当方Macなので、調べてみたらターミナルで実行できるのですね。 grep -v (path)delshop.csv (path)shoplist.csv で実行してみたのですが、 結果はターミナル上にshoplist.csvの中身が表示されただけで終わってしまいました。 delshop.csvにはIDのみ書かれていて、shoplist.csvでIDが一致する行を削除したファイルを別名保存したいのですが、どのように書けば良いかアドバイスいただけないでしょうか?
お礼
こちらで解決できました。 丁寧に解説してくださいってありがとうございました。 #!/bin/bash while read line do echo $line sed -i -e "/$line/d" shoplist.csv done < delshop.csv
補足
すみません、せっかく教えていただきましたが、Macのターミナルでは各ファイルの中身は取得できましたが、コマンドと出力の部分は何の反応もありませんでした。 残念ですが私のスキルでは太刀打ちできないようです。 お手数おかけしました