У меня есть файл, полный информации о сборке мусора, который является нерегулярным, некоторые строки содержат дополнительную информацию, которую я хочу первоначально удалить, чтобы я мог затем обработать файл в целом.
К сожалению, в строке довольно много специальных символов, и я борюсь с командой sed, которой удается сопоставить бит, который я хочу удалить ...
Строка включает в себя что-то вроде этого:
[ParOldGen: 0K->0K(0K)] 0K->0K(0K), [Metaspace: 0K->0K(0K)], 0 secs]
В этой строке есть другая информация, которую я хочу сохранить, которая включает в себя []()
символов.
Я хочу соответствовать
[ParOldGen*secs]
и затем удалите его с помощью sed
cat test.log | sed -e 's,<match>,,g' | ...
Я пошел и проверил проверку на регулярные выражения, которая придумала:
\[ParOldGen(?:(?!secs\])(?:.|\n))*secs\]
Однако он не совпадает с sed -e и выдает ошибку при использовании sed -E
Я не могу легко использовать вырезку, потому что в слишком многих других разделах есть [и].
Я пытался что-то вроде этого:
cat test.log | while read line; do if [ "$line" == *"ParOldGen"* ];then cut -d ":" -f 1,9; else cut -d ":" -f 1,7; fi; done | tail
, что эффективно обойти это, но я не смог найти совпадение в ParOldGen, он всегда просто выполняет часть then.
Мой ожидаемый вывод - я хочу удалить строку ParOldGen.
Кто-нибудь может мне помочь с этим?
Спасибо!