Как получить строки, которые находятся в определенной части

Я новый пользователь awk и знаю, как вырезать столбцы, добавлять столбцы и заменять символы. Сейчас мне нужно вырезать определенный шаблон из огромного файла. Файл выглядит следующим образом:

1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.

2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.

3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix = manager.
3manager.org.apache.juli.FileHandler.bufferSize = 16384

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
2017-09-08 08:50:04.896 INFO 16323 --- [nio-8080-exec-8] c.c.c loginCOntroller.java:LOG:Successfully Logged In

Из этого файла (выше только голова, файл намного больше) мне нужно вырезать все строки с узором:

2017-09-08 08:50:04.896 INFO 16323 --- [nio-8080-exec-8] c.c.c loginCOntroller.java:LOG:

Я использовал

   sed 's/^.*java:LOG:=//' inpufile > outputfile

Но это не сработало.

0
08.09.2017, 09:57
2 ответа

Попробуйте это:

sed -n '/.*java:LOG:/p' inpufile > outputfile

Команда sed -n '/pattern/p'печатать только те строки, которые соответствуют шаблону внутри //

Ваша команда-sed 's/^.*java:LOG:=//'-использует замещающую конструкциюs/pattern/replace_string/(в поисках patternи заменяет ее наreplace_string)

Из вашего примера команды sedя предполагаю, что вам нужны только строки, содержащие java:LOG:. Это правда?

Обратите внимание на ваше имя файла-вы пропустили букву 't'-inpufile , но не inpu t файл

Если вам нужно точное совпадение с этой строкой:

2017-09-08 08:50:04.896 INFO 16323 --- [nio-8080-exec-8] c.c.c loginCOntroller.java:LOG:

.. шаблон будет слишком длинным

0
28.01.2020, 04:40

Просто с помощьюawk(для извлечения строк по шаблону):

awk '/^[0-9]{4}-[0-9]{2}-[0-9]{2}.*\.java:LOG/' inputfile > outputfile
0
28.01.2020, 04:40

Теги

Похожие вопросы