Как использовать grep для соответствия строке пробелам в нем?

Может любой помогать мне с этим:

Я пытаюсь извлечь метку времени путем соответствия строке. Поскольку это использует комбинацию команд grep/awk. Поскольку жало имеет 4 spces прежде [1] и один после, перепутан, как работать вокруг этого. В новинку для программирования, поэтому нуждаются в некоторой помощи здесь.

IS="$(grep 'Starting    [1] TaskInit' process.log |  awk '{print $4}')"
echo "$IS"

Цель: Это должно соответствовать строке в файле process.log и должно распечатать метку времени, связанную с той строкой.

0
задан 17 July 2019 в 10:27

2 ответа

Пробелы не являются проблемой здесь, она должна хорошо работать.
Но скобки [ потребность, которой оставят в regex. Так запись:

grep 'Starting    \[1] TaskInit' process.log

В Вашем случае, поскольку Вы хотите соответствовать фиксированной строке и не regex, необходимо использовать grep -F вместо этого. Затем Вы не должны выходить:

grep -F 'Starting    [1] TaskInit' process.log
4
ответ дан 23 October 2019 в 23:34

Просто необходимо выйти из квадратных скобок, потому что у них есть особое значение:

grep 'Starting    \[1\] TaskInit' process.log

Кроме того, я использовал бы только awk для этой задачи с этой целью Вам нужно что-то как:

awk '/Starting    \[1] TaskInit/ {print $4}' process.log
3
ответ дан 23 October 2019 в 23:34

Другие вопросы по тегам:

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