Разбор строки для получения необходимых данных - PullRequest
0 голосов
/ 13 июля 2011

Я пытаюсь проанализировать строку в файле, который содержит «ID» и числовую запись.Тем не менее, скрипт, выполняемый ниже, захватывает числовое значение «ID» плюс все, что после него.Как я могу просто сократить его до "ID" + числовое значение и ничего больше?

Заранее спасибо.

tail -n 1 events.log | sed 's/.*id=\([^)]\+\).*/\1/' > event_id.dat

Ответы [ 2 ]

0 голосов
/ 13 июля 2011

Трудно сказать, что вы ищете, без примера ввода и ожидаемого вывода, но это может работать в большинстве случаев:

sed -e 's/.*id=\([0-9]*\).*/\1/'

Это составляет:

  1. Ищите строки, включающие «id =», сразу после которых следуют некоторые числа ([0-9]*), с любым количеством чего-либо до или после
  2. Заменить эти строки только числами (где \1 ссылается на часть в скобках в выражении совпадения)

Это делает то, что вы хотите? Если нет, то можете ли вы более четко указать свои требования к вводу / выводу?

0 голосов
/ 13 июля 2011

Строка регулярного выражения в скобках [^)]\+, что означает «все символы, кроме конечной скобки».

Если вы хотите поймать числовые цифры, вам нужно изменить это значение на [0-9]\+

...