Як видалити всі екземпляри певного символу з текстового файлу?


13

У мене величезний (близько половини GiB, неможливо використовувати звичайний текстовий редактор) CSV-файл із полями, укладеними у подвійні лапки, "abc","def"але потрібен файл без лапок (я впевнений, що це не буде порушувати послідовність файлів - кома ніколи не використовується всередині значень).

Як видалити всі лапки (без введення пробілів на їх місцях)?

Відповіді:


21

tr може це зробити:

tr -d \" < infile > outfile

Ви також можете використовувати sed:

sed 's/"//g' < infile > outfile

1
Чому ви зняли < infile > outfile? ІМХО було більш інформативним.
Іван

@Ivan Я подумав, що це, мабуть, покладається на другу думку.
Кріс Даун

Тільки для досвідчених користувачів командного рядка. Незважаючи на те, що я <раніше декілька разів використовував (для імпорту SQL-скриптів у MySQL та SQLite), для мене було б очевидно, що я повинен використовувати <в цьому випадку. Думаю, було б краще повернути повний приклад командного рядка назад для подальшого ознайомлення з тими, кому це може знадобитися.
Іван

@Ivan та @Chris, я повернув її назад (очікує на розгляд), щоб включити < infile > outfile, сподіваюся, що це нормально.
доношено успішно

Дякую, @donothingsуспішно. Я попередньо вписав попередній коментар, шкода, що не можу його відредагувати% -]
Іван

5

Інша версія команди sed :

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

    • -i я n-місце (редагувати файл на місці)
    • sкоманда s ubstitute
    • /replacement_from_reg_exp/replacement_to_text/ заява
    • \"котирування, які передують зворотній косої риси ( substitu_from_reg_exp )
    • порожній рядок між слеш delemiters ( replacement_to_text )
    • g g лобальний (для заміни всіх випадків у рядку)
  • file.txt ім'я файлу

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.