2013-09-17 2 views
1

Я хочу найти фразу в документе.
Но, может быть, фраза была разбита на две строки.
Так что я хочу сделать, это:
Искать в:
LINE1 и line2
line2 и line3
line3 и строка4
......как искать фразу в каждой строке с помощью sed

Я новичок, и я хочу практика использование sed.
Итак, как я могу это сделать с sed?
Любые идеи?


Это не работает.

$ sed 'N;s/line2.line3/line23/' test.txt 
line1 
line2 
line3 
line4 
line5 

1) sed прочитайте первую строку и вторую строку, затем выполните поиск.
2) sed прочитал третью строку и четвертую строку, затем выполнил поиск.
...
Так что если фраза в строке2 и строке3, я буду скучать по ней.
Могу ли я прочитать предыдущую строку?


обновление

Спасибо за помощь @Beta «s.

sed '$!N;s/line2.line3/line23/;P;D;' 

Это работает. Но я все еще немного смущен.
Есть еще вопросы.

Я прочитал инструкцию.

n: читать следующую строку ввода в пространство рисунка.
N: добавьте следующую строку ввода в пространство рисунка.
d: Удалить пространство с рисунком. Начните следующий цикл.
D: Удалить до первой внедренной новой строки в пространстве шаблонов. Начните следующий цикл, но пропустите чтение с ввода, если в пространстве рисунка остались данные.

sed -n 'N;P' test.txt 

1) СЭД читать первую и вторую линию, затем напечатать первую строку.
2) sed пуст свое пространство, затем прочитайте третью и четвертую строки, затем напечатайте третью строку.
Я прав?

sed -n 'N;P;D' test.txt 

1) sed прочитайте первую и вторую строчку, затем напечатайте первую строку.
2) sed не пустит пространство своего рисунка, а затем прочитает третье, а затем распечатает вторую строку.
Я прав?

Почему «следующая строка» имеет разные поведения в командах N и n в двух командах выше?



sed '$!N;s/line2.line3/line23/;P;D;' 

ps.I думаю "$!" не обязательно.

+0

Приведите несколько примеров входного файла и ожидаемый результат с разбитыми фразами в нескольких строках ... – iamauser

ответ

5

Существует не один способ сделать это. Это близко к тому, что вы пробовали:

sed '$!N;s/line2.line3/line23/;P;D;' 
+0

Благодарит так много. Но я все еще немного смущен «n», «N» и «D». Я обновляю свои вопросы. Не могли бы вы снова помочь мне? PS: Я думаю, «$!» в командах, которые вы предоставили, не требуется. –

Смежные вопросы