У меня есть file.txt который выглядит так:

foo
bar
foo
bar

Я хотел, чтобы это выглядело так:

foobar
foobar

foo - это всегда начало "первичной" строки и bar "вторичной".

Закрытие я был это:

sed -n '1{h;n;G};p' file.txt

Но эта команда просто меняет порядок, поэтому вместо желаемого результата я получаю:

bar
foo
foo
bar

Любая идея?

1 ответ1

2

Следующее работает для вашего примера:

sed -n '/foo/{N;s/\n//p}'

Это находит foo , читает следующую строку, а затем удаляет новую строку между ними.

В зависимости от ваших конкретных условий, вы можете закрепить матч:

sed -n '/^foo$/{N;s/\n//p}'.

Некоторые из расширенных возможностей sed могут быть довольно устрашающими, но это довольно хорошая справка.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .