У меня есть следующие данные, и мне нужно собрать их все в одну строку.
У меня есть это:
22791
;
14336
;
22821
;
34653
;
21491
;
25522
;
33238
;
Мне это нужно:
22791;14336;22821;34653;21491;25522;33238;
РЕДАКТИРОВАТЬ
Ни одна из этих команд не работает идеально.
Большинство из них позволяют данным выглядеть так:
22791
;14336
;22821
;34653
;21491
;25522
Ответы:
Редактировать:
Если ни одна из представленных здесь команд не работает, значит, у вас есть что-то, кроме новой строки, разделяющей ваши поля. Возможно, у вас есть окончания строк DOS / Windows в файле (хотя я ожидаю, что решения Perl будут работать даже в этом случае)?
Пытаться:
Если это не сработает, вам придется более внимательно изучить свой файл (например, в шестнадцатеричном редакторе), чтобы выяснить, какие символы на самом деле там находятся, которые вы хотите удалить.
источник
tr
не подходит для пустых строк. Что вы думаете? - - Я думаю, чтоsed
это лучший вариант, описанный здесь stackoverflow.com/q/16414410/54964echo -n $(tr -d "\n" < yourfile.txt) > yourfile.txt
Должен делать свою работу.
источник
perl -pie 's/\R//g' filename
источник
paste -sd ""
не работает на STDIN по умолчанию, поэтому, если вы(some command) | paste -sd "" -
paste -sd'\0' -
Или
Или
Эта страница здесь есть куча других способов удаления переводов строк.
отредактирован, чтобы удалить насилие над кошками :)
источник
использовать
чтобы понять, ЧТО является оскорбительным персонажем. затем используйте
для LF
для CRLF
источник
Вы можете отредактировать файл в vim:
источник
:%s/\n/ /g
Использование man 1 ed:
источник
Факт ботаника: вместо этого используйте ASCII.
(Отредактировано, потому что я не видел чертовского ответа с таким же решением, единственная разница заключалась в том, что у меня был ASCII)
источник
Используйте sed с классами POSIX
Это удалит все строки, содержащие только пробелы (пробелы и табуляции)
sed '/^[[:space:]]*$/d'
Просто возьмите то, с чем вы работаете, и подключите его к этому
пример
cat filename | sed '/^[[:space:]]*$/d'
источник
источник
Если данные находятся в файле file.txt, то:
'
$(<file.txt)
' Читает файл и выдает его содержимое в виде серии слов, которые затем повторяются эхом с пробелом между ними. Затем команда 'tr' удаляет все пробелы:источник
tr -d '\n' < file.txt
, что и делает принятый ответ (и я удивлен, что не написал его в то время). Вероятно, это было написано просто, чтобы показать «еще один способ сделать это».xargs
также потребляет символы новой строки (но добавляет последний завершающий символ новой строки):источник
Предполагая, что вы хотите сохранить только цифры и точки с запятой, следующее должно помочь при условии, что нет серьезных проблем с кодировкой, хотя оно также удалит самую последнюю «новую строку»:
Вы можете легко изменить приведенное выше, чтобы включить другие символы, например, если вы хотите сохранить десятичные точки, запятые и т. Д.
источник
Использование текстового редактора gedit (3.18.3)
\n\s
в поле поискаПримечание: это не совсем решает исходную 7-летнюю проблему OP, но должно помочь некоторым пользователям Linux-новичкам (например, мне), которые находят путь сюда из SE с аналогичными вопросами «как мне получить весь мой текст в одной строке» .
источник
Был такой же случай сегодня, супер просто в vim или nvim, вы можете использовать
gJ
для соединения строк. Для вашего случая использования просто сделайтеэто объединит все ваши 99 строк. Вы можете отрегулировать количество по
99
мере необходимости в зависимости от того, сколько строк нужно соединить. Если просто присоединиться к одной строке, тоgJ
достаточно.источник
Я бы сделал это с помощью awk, например
(недостаток - "накапливается" в памяти).
РЕДАКТИРОВАТЬ
Забыл про printf! Поэтому также
или, вероятно, лучше, то, что уже было дано в других ответах, использующих awk.
источник
Я обычно получаю этот вариант использования, когда копирую фрагмент кода из файла и хочу вставить его в консоль, не добавляя ненужных новых строк, в итоге я сделал псевдоним bash
(я назвал его,
oneline
если вам интересно)xsel -b -o
читает мой буфер обменаtr -d '\n'
удаляет новые строкиtr -s ' '
удаляет повторяющиеся пробелыxsel -b -i
отправляет это обратно в буфер обменапосле этого я вставлял новое содержимое буфера обмена в строку в консоли или что-то еще.
источник
Вам не хватает наиболее очевидного и быстрого ответа, особенно когда вам нужно сделать это в графическом интерфейсе, чтобы исправить какой-то странный перенос слов.
открыто
gedit
Затем Ctrl+ H, затем введите
Find
текстовое поле\n
и вReplace with
пустое место,затем заполните флажок
Regular expression
и вуаля.источник
Чтобы также удалить завершающую новую строку в конце файла
источник