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

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

Мне нужна эта строка текстового файла

This is to become line 1 and that is line 2

Разделить на 2 строки, например так:

This is to become line 1
and that is line 2

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

решение1

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

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.. /..> 

решение2

Я добавляю свою личную реализацию с помощью awk, таким образом, вы можете изменять ее 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}'

Связанный контент