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

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

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

22791

;

14336

;

22821

;

34653

;

21491

;

25522

;

33238

;

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

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

Править

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

Большинство из них позволяет данным как это:

22791

;14336

;22821

;34653

;21491

;25522
91
задан bitmask 22 August 2012 в 17:11
поделиться

8 ответов

tr -d '\n' < yourfile.txt

Edit:

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

Попробуйте:

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

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

202
ответ дан 24 November 2019 в 06:41
поделиться

Я бы сделал это с помощью awk, например

awk '/[0-9]+/ { a = a $0 ";" } END { print a }' file.txt

(недостаток в том, что a «накапливается» в памяти).

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

Забыл о printf! Так же

awk '/[0-9]+/ { printf "%s;", $0 }' file.txt

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

0
ответ дан 24 November 2019 в 06:41
поделиться
tr -d '\n' < file.txt

Или

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

Или

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

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

отредактировано, чтобы удалить жестокое обращение с кошками :)

4
ответ дан 24 November 2019 в 06:41
поделиться
perl -p -i -e 's/\R//g;' filename

Должен выполнить свою работу.

10
ответ дан 24 November 2019 в 06:41
поделиться

Если данные находятся в файле file.txt, то:

echo $(<file.txt) | tr -d ' '

' $ (' читает файл и выдает его содержимое в виде последовательности слов, которые "эхо" затем повторяются с пробелом между ними. Затем команда 'tr' удаляет все пробелы:

22791;14336;22821;34653;21491;25522;33238;
1
ответ дан 24 November 2019 в 06:41
поделиться

Использование man 1 ed:

# cf. http://wiki.bash-hackers.org/doku.php?id=howto:edit-ed 
ed -s file <<< $'1,$j\n,p'  # print to stdout 
ed -s file <<< $'1,$j\nwq'  # in-place edit
2
ответ дан 24 November 2019 в 06:41
поделиться
paste -sd "" file.txt
7
ответ дан 24 November 2019 в 06:41
поделиться
$ perl -0777 -pe 's/\n+//g' input >output
$ perl -0777 -pe 'tr/\n//d' input >output
1
ответ дан 24 November 2019 в 06:41
поделиться
Другие вопросы по тегам:

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