
Мне нужна эта строка текстового файла
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}'