Как я могу сделать копию файла, удаляющего все пробелы (так что новый файл не имеет пробелов)

Похоже, единственное решение - это перейти на Google Chrome, что я сделал, и теперь все в порядке.

1
задан 25 January 2018 в 18:04

4 ответа

Чтобы удалить все горизонтальные пробельные символы (например, пробелы и горизонтальные вкладки)

tr -d '[:blank:]' < file > newfile

Чтобы удалить горизонтальные пробельные символы (включая символы новой строки и вертикальные вкладки)

tr -d '[:space:]' < file > newfile

Обратите внимание, что это оставит файл без его завершающего прерывания от POSIX: см. например, Почему текстовые файлы заканчиваются новой строкой?

2
ответ дан 17 July 2018 в 22:15

Текстовая обработка с оболочкой медленная. Для этого вы должны использовать утилиту обработки текста. Например, вы можете использовать sed

Удалить все горизонтальные пробелы:

sed 's/\s//g' file > output

Удалить все горизонтальные пробелы и пустые строки или строки только с пробелами:

sed 's/\s//g;/^$/d' file > output

Удалите все пробелы любого типа безжалостно, включая все новые строки

sed ':a;s/\s//g;N;s/\n//;ba' file > output

Примечания:

s/\s//g заменить любой горизонтальный символ пробела ничем, сопоставляя каждый пробельный символ в строка [g означает все совпадения в строке) ; отделяет команды sed /^$/ пустая строка d удаляет пробел :a пространства пробела - выполните здесь N прочитайте следующую строку в узорное пространство \n newline в пространстве паттерна ba Отметьте :a и снова выполните
1
ответ дан 17 July 2018 в 22:15

Чтобы удалить все горизонтальные пробельные символы (например, пробелы и горизонтальные вкладки)

tr -d '[:blank:]' < file > newfile

Чтобы удалить горизонтальные пробельные символы (включая символы новой строки и вертикальные вкладки)

tr -d '[:space:]' < file > newfile

Обратите внимание, что это оставит файл без его завершающего прерывания от POSIX: см. например, Почему текстовые файлы заканчиваются новой строкой?

2
ответ дан 23 July 2018 в 22:54

Текстовая обработка с оболочкой медленная. Для этого вы должны использовать утилиту обработки текста. Например, вы можете использовать sed

Удалить все горизонтальные пробелы:

sed 's/\s//g' file > output

Удалить все горизонтальные пробелы и пустые строки или строки только с пробелами:

sed 's/\s//g;/^$/d' file > output

Удалите все пробелы любого типа безжалостно, включая все новые строки

sed ':a;s/\s//g;N;s/\n//;ba' file > output

Примечания:

s/\s//g заменить любой горизонтальный символ пробела ничем, сопоставляя каждый пробельный символ в строка [g означает все совпадения в строке) ; отделяет команды sed /^$/ пустая строка d удаляет пробел :a пространства пробела - выполните здесь N прочитайте следующую строку в узорное пространство \n newline в пространстве паттерна ba Отметьте :a и снова выполните
1
ответ дан 23 July 2018 в 22:54
  • 1
    Я знаю, что он медленный с оболочкой, я хочу в этом, plzz. – Abhishek Chourasia 25 January 2018 в 16:29
  • 2
    @AbhishekChourasia хорошо, но я не знаю, как это сделать только с Bash. Ответы в разделе «Стек» не только для айзера, но и для всего сообщества. Этот ответ предназначен для других, которые не настаивают на том, чтобы заставить оболочку делать то, что было написано совершенно неплохое программное обеспечение для обработки текста, чтобы сделать это быстрее и легче;) – Zanna 25 January 2018 в 16:33

Другие вопросы по тегам:

Похожие вопросы: