Как найти последний шаблон линии
У меня есть файл с содержимым
x
a
x
b
x
c
Я хочу посмотреть последний случай,
x
c
когда я пытаюсь
sed -n "/x/,/b/p" file
в нем перечислены все строки, начиная с x
до c
.
Ответы
Ответ 1
Я не уверен, правильно ли я понял ваш вопрос, поэтому вот несколько снимков в темноте:
-
Вывести последнее вхождение x
(регулярное выражение):
grep x file | tail -1
-
В качестве альтернативы:
tac file | grep -m1 x
-
Распечатать файл от первой соответствующей строки до конца:
awk '/x/{flag = 1}; flag' file
-
Печатать файл от последней соответствующей строки до конца (печатает все строки в случае несоответствия):
tac file | awk '!flag; /x/{flag = 1};' | tac
Ответ 2
Это может сработать для вас (GNU sed):
sed '/x/h;//!H;$!d;x' file
Сохраняет последний x
и то, что следует в удержании, и печатает его в конце файла.
Ответ 3
не уверен, как это сделать, используя sed
, но вы можете попробовать awk
awk '{a=a"\n"$0; if ($0 == "x"){ a=$0}} END{print a}' file
Ответ 4
grep -A 1 x file | tail -n 2
-A 1
говорит grep печатать одну строку после строки совпадения
с tail
вы получите последние две строки.
или в обратном порядке:
tac fail | grep -B 1 x -m1 | tac
Примечание: вы должны убедиться, что ваш паттерн достаточно силен, чтобы вы получили правильные линии. то есть, заключив его в ^
в начале и $
в конце.