Как удалить все экземпляры определенного символа из текстового файла?

13

У меня есть огромный (около половины ГиБ, на котором невозможно использовать обычный текстовый редактор) файл CSV с полями, заключенными в двойные кавычки, например, "abc","def"но мне нужен файл без кавычек (я уверен, что это не нарушит целостность файла - запятая никогда не используется внутри значений в ней).

Как убрать все кавычки (без введения пробелов на их местах)?

Иван
источник

Ответы:

21

tr может сделать это:

tr -d \" < infile > outfile

Вы также можете использовать sed:

sed 's/"//g' < infile > outfile
Крис Даун
источник
1
Почему вы удалили < infile > outfile? ИМХО это было более информативно.
Иван
@ Иван, я подумал, что это, вероятно, скрыто от второй мысли.
Крис Даун
Только когда для опытных пользователей командной строки. Несмотря на то, что я уже использовал <пару раз (для импорта сценариев SQL в MySQL и SQLite), для меня сразу было бы очевидно, что мне следует использовать <в этом случае. Я думаю, что было бы лучше вернуть полный пример командной строки назад для дальнейшего ознакомления с теми, кому это может понадобиться.
Иван
@Ivan и @Chris, я вернул его обратно (в ожидании обзора), чтобы включить < infile > outfile, надеюсь, что все в порядке.
Успехов
Спасибо, @donothingsuccessful. Я полностью ошибся в предыдущем комментарии, жаль, что не могу его отредактировать% -]
Иван
5

Другая версия команды sed :

sed -i s/\"//g file.txt
  • sed s Tream ред itor

    • -i я n-место (редактировать файл на месте)
    • ss команда ubstitute
    • /replacement_from_reg_exp/replacement_to_text/ заявление
    • \"кавычки, начинающиеся с обратной косой черты ( replace_from_reg_exp )
    • пустая строка между слэш delemiters ( replacement_to_text )
    • g g lobal (для замены всех вхождений в строке)
  • file.txt имя файла

simhumileco
источник