Intereting Posts
Создайте программный RAID 1 на сервере Linux (сервер openSUSE) Кросс-компиляция пакета FreeBSD как непривилегированного пользователя Как grep через несколько файлов, используя строки из двух входных файлов в качестве начала и конца шаблона? Получить код ключа с клавиатуры, сделанной на заказ При знаке после shebang? Как исправить прерывистое воспроизведение видео в Ubuntu? Как вы переносите части имени файла в Linux? Фильтрация и очередь пакета процесса с использованием iptable Как определить aptitude для автоматической установки отсутствующих пакетов вместо того, чтобы удалять их в зависимости от зависимостей? Зачем добавлять круглые скобки вокруг имени процесса? Лучший способ для изменения IP-адреса от провайдера? Просмотр подключенных клиентов pptp-клиентов slitaz 4.0 grub2 loopback объединяет несколько изображений initrd Нет выхода через стереоразъем найти последний файл с датой и датой и использовать sed

Команда Bash для разделения одной строки текста на две строки

Я хочу эту строку текстового файла

This is to become line 1 and that is line 2 

Чтобы разбить на две строки, выполните следующие действия:

 This is to become line 1 and that is line 2 

Обратите внимание, что я не хочу редактировать / вырезать / удалять что-либо, а не один символ, я просто хочу, чтобы в итоге получилось 2 строки текста вместо одного, и чтобы можно было решить, где должен состояться раскол. Как я могу использовать sed или awk или split для этого? Не важно, какой из них я использую, но я бы предпочел sed , если возможно …

Ну, это сработает, если вы попытаетесь разделить линию на слово «и».

 echo "This is to become line 1 and that is line 2" | sed 's/and/\nand/g' This is to become line 1 and that is line 2 

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

ОБНОВИТЬ:

Чтобы получить раскол, вы просто добавляете «\ n» перед элементом / элементом, который вы хотите использовать в качестве начала второй строки.

 echo "Sun rise: <...strong...>07:24 am<../..strong..><..br ../..> Sun set: <..strong..>07:31 pm<../..strong..><..br.. /..> " | sed 's/Sun set/\nSun set/' Sun rise: <...strong...>07:24 am<../..strong..><..br ../..> Sun set: <..strong..>07:31 pm<../..strong..><..br.. /..> 

Я добавляю свою личную реализацию с помощью awk , таким образом вы можете изменить separator по своему separator .

 echo "line 1 and line 2" | awk -v separator="and" 'BEGIN {FS=separator} $0 ~ separator {printf "%s\n%s%s", $1,FS,$2}' 

Я всегда предпочитаю использовать awk из-за возможности легко использовать переменные. Если вы хотите разделить свою линию на основе других разделителей , вы можете просто изменить значение separator на другое.

Если вы хотите вырезать separator со второй строки (я имею в виду, что вы не хотите читать « и строку 2 », а только « строка 2 »):

 echo "line 1 and line 2" | awk -v separator="and " 'BEGIN {FS=separator} $0 ~ separator {printf "%s\n%s", $1,$2}'