Я хочу получить все строки в тексте в одну строку. Я новичок в программировании, пытающийся учиться на практике. Я провел четыре часа, пытаясь решить эту проблему. Я знаю, что есть простое решение этой проблемы. Вот что я пытался
sed -e 'N; s / \ n //' myfile.txt # ничего не делает sed -e: -e N -e 's / \ n / /' -e ta myfile.txt #output все испорчено, и я не могу понять ни синтаксис, ни голову кошка myfile.txt | tr -d '\ n'> myfile.txt # Удаляет все строки
Вот текстовый файл:
500212 262578-4-4 23200 ГРИФФИТ ЛАБОРАТОРИЗ, ООО GRIFFITH LABORATORIES СОВЕТ ЮЖНОЙ ДУБЛИНЫ ОФИС ОФИС (ПРОМЫШЛЕННЫЙ) Список оцениваемых 2 Пайнвью Индастриал Эстейт Firhouse Road Ноклайн 31 декабря 2007 г. 01 января 2008 года "
Я не могу понять, где я ошибся ....
cat reval_details.asp?Pno=500211.txt | tr -d '\n' > new_reval_details.asp?Pno=500211.txt
tr -d '\n' <input.txt > output.txt
- избежать ненужного использования cat и использовать одну менее ненужную трубу.Вот. Это еще одно решение, простое и легкое.
источник
echo `cat Input.txt` > Output.txt
тоже работает, просто другойtr
решение.ПРОСТОЙ МЕТОД
Еще один метод с использованием awk,
Выход:
Заметка:
ORS = '' -> Это ваш разделитель полей, в качестве разделителя полей вы можете использовать любые символы между одинарными кавычками. Используя этот метод awk, мы можем включать пробелы и все символы.
Надеюсь, это может помочь!
источник
man awk
Нет необходимости помещать метку
:a
за пределы основной инструкции, и при этом не-e
требуется необходимая опция; наконец,/$/
лишнее (каждая строка имеет символ EOL).Улучшая другие ответы, каждый получает
Что яснее, если написано так:
Команда работает следующим образом:
N
добавляет следующую строку к (многострочному) шаблонному пространству, которое уже содержит текущую строку;s/\n/ /
заменить символ новой строки,\n
сгенерированныйN
с помощью пробела;
ta
переходит к строке сценария, следующей за меткой,:a
до тех пор, пока замена на шаге 2 прошла успешно , т. е. если замена произошла, выполнение переходит на шаг 1 без «удара» по концу сценария, т.е. без чтения другой строки ввода.Обратите внимание на следующее;
sed
читает строки входного файла по порядку, начиная с 1-й строки ;:a
это просто метка, а не команда для выполнения;N
в принципе выполняется на любой строке, ноs/\n/ /
(в принципе выполняется на любой строке) успешно на любой строке, кроме последней , поэтомуta
делает конец скрипта достижимым только тогда, когда читается последняя строка ввода (единственная строка, где происходитs
сбой), поэтомуp
команда выполняется.Таким образом, скрипт в основном читает в 1-й строке ввода и продолжает добавлять следующие строки одну за другой, каждый раз заменяя новую строку пробелом; после добавления последней строки (и
\n
изменения в пробеле)N
не может быть добавлена ни одна строка, происходитs
сбой,ta
пропускается , достигается конец сценария, и подразумеваемыйp
оператор rint выполняется в текущем однолинейном пространстве шаблона ,-i
Опция заменяет входной файлfile
со всем шаблоном 1 линии.источник
GEdit:
Найдите и замените
\n
пробел ''.Вы можете получить окно замены, перейдя в «Поиск» -> «Заменить»
или с помощью сочетания клавиш Ctrl+H
Смотрите скриншот ниже:
Ваш оригинальный текст в строках 1-14.
Результат в строке 16.
источник
Я думаю, что самый простой способ сделать это:
http://ss64.com/bash/paste.html
источник
Попробуй это
http://anandsekar.github.io/joining-all-lines-in-a-file-using-sed/
источник
Я думаю, вы просто забыли, что вам нужно было сказать sed перенаправить вывод yourfile.txt на желаемый результат, newfile.txt. Это , кажется, команда вам нужно, но только если файлы , которые вы пытаетесь слияния не являются слишком большими для СЕПГ буферов:
sed -e :a -e N -e 's/\n/ /' -e ta yourfile.txt >newfile.txt
. Отдайте должное другому форуму здесь , где они обсуждают возможности sed. Я проверил команду, и она сработала для меня.источник
-i
переключателем меняет исходный файл в линию , так что нет необходимости выводить в другой файл. Будьте осторожны, хотя!a' sed -i :a -e N -i 's/\n/ /' -e ta reval_details.asp?Pno=500214.txt sed: can't find label for jump to
' sed -e: -e N -i 's / \ n / /' -e та reval_details .asp? Pno = 500214.txt sed: не могу прочитать s / \ n / /: нет такого файла или каталога # Есть идеи.Чистое решение Bash:
источник
Если бы это был я, я бы просто открыл его в vim и нажал Shift+ Jнесколько раз.
источник
Введите в vim и нажмите Enter:
источник
Python подход:
AWK:
источник