Я хочу найти фразу в документе.
Но, может быть, фраза была разбита на две строки.
Так что я хочу сделать, это:
Искать в:
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 думаю "$!" не обязательно.
Приведите несколько примеров входного файла и ожидаемый результат с разбитыми фразами в нескольких строках ... – iamauser