Как удалить переводы строк из текстового файла? - PullRequest
82 голосов
/ 28 июня 2010

У меня есть следующие данные, и мне нужно поместить их все в одну строку.

У меня есть это:

22791

;

14336

;

22821

;

34653

;

21491

;

25522

;

33238

;

Мне нужно это:

22791;14336;22821;34653;21491;25522;33238;

РЕДАКТИРОВАТЬ

Ни одна из этих команд не работает идеально.

Большинство из них допускают такие данные:

22791

;14336

;22821

;34653

;21491

;25522

Ответы [ 18 ]

187 голосов
/ 28 июня 2010
tr -d '\n' < yourfile.txt

Edit:

Если ни одна из команд, размещенных здесь, не работает, то у вас есть что-то кроме новой строки, разделяющей ваши поля. Возможно, в файле есть окончания строк DOS / Windows (хотя я ожидаю, что решения Perl будут работать даже в этом случае)?

Попробуйте:

tr -d "\n\r" < yourfile.txt

Если это не сработает, вам придется более внимательно изучить файл (например, в шестнадцатеричном редакторе), чтобы выяснить, какие символы на самом деле там, и которые вы хотите удалить.

8 голосов
/ 28 июня 2010
perl -p -i -e 's/\R//g;' filename

Должен делать работу.

7 голосов
/ 28 июня 2010
paste -sd "" file.txt
4 голосов
/ 08 декабря 2014

используйте

head -n 1 filename | od -c 

, чтобы понять, ЧТО является оскорбительным символом.затем используйте

tr -d '\n' <filename

для LF

tr -d '\r\n' <filename

для CRLF

4 голосов
/ 28 июня 2010
tr -d '\n' < file.txt

Или

awk '{ printf "%s", $0 }' file.txt

Или

sed ':a;N;$!ba;s/\n//g' file.txt

Эта страница здесь имеет множество других методов для удаления новых строк.

отредактировано для устранения злоупотребления кошачьими:)

4 голосов
/ 03 октября 2015

Вы можете редактировать файл в vim:

$ vim inputfile
:%s/\n//g
2 голосов
/ 27 апреля 2017

Nerd факт: вместо этого используйте ASCII.

tr -d '\012' < filename.extension   

(Отредактировано, потому что я не увидел чертов ответ ', который имел такое же решение, единственное отличие было в том, что у моего был ASCII)

1 голос
/ 26 января 2019

Сегодня был такой же случай, супер просто в vim или nvim, вы можете использовать gJ для объединения строк.Для вашего случая использования, просто сделайте

99gJ

, это объединит все ваши 99 строк.Вы можете настроить число 99 по мере необходимости в зависимости от того, сколько строк присоединиться.Если просто присоединиться к линии 1 , то достаточно только gJ.

1 голос
/ 03 января 2018

Использование текстового редактора gedit (3.18.3)

  1. Нажмите Поиск
  2. Нажмите Найти и заменить ...
  3. Введите \n\s в Найти поле
  4. Оставить Заменить на пробел (ничего)
  5. Чек Регулярное выражение box
  6. Нажмите кнопку Найти

Примечание: это не совсем решает первоначальную семилетнюю проблему ОП, но должно помочь некоторым пользователям Linux noob (таким как я), которые находят свой путь сюда из SE с похожим «как мне получить мой текст все на одном» строка "вопросы.

1 голос
/ 09 декабря 2015

Предполагая, что вы хотите сохранить только цифры и точки с запятой, следует выполнить следующее, предполагая, что нет серьезных проблем с кодировкой, хотя это также удалит самую последнюю "новую строку":

$ tr -cd ";0-9"

Вы можете легко изменить вышеупомянутое, чтобы включить другие символы, например. если вы хотите сохранить десятичные точки, запятые и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...