Может любой помогать мне с этим:
Я пытаюсь извлечь метку времени путем соответствия строке. Поскольку это использует комбинацию команд grep/awk. Поскольку жало имеет 4 spces прежде [1] и один после, перепутан, как работать вокруг этого. В новинку для программирования, поэтому нуждаются в некоторой помощи здесь.
IS="$(grep 'Starting [1] TaskInit' process.log | awk '{print $4}')"
echo "$IS"
Цель: Это должно соответствовать строке в файле process.log и должно распечатать метку времени, связанную с той строкой.
Пробелы не являются проблемой здесь, она должна хорошо работать.
Но скобки [
потребность, которой оставят в regex. Так запись:
grep 'Starting \[1] TaskInit' process.log
В Вашем случае, поскольку Вы хотите соответствовать фиксированной строке и не regex, необходимо использовать grep -F
вместо этого. Затем Вы не должны выходить:
grep -F 'Starting [1] TaskInit' process.log
Просто необходимо выйти из квадратных скобок, потому что у них есть особое значение:
grep 'Starting \[1\] TaskInit' process.log
Кроме того, я использовал бы только awk
для этой задачи с этой целью Вам нужно что-то как:
awk '/Starting \[1] TaskInit/ {print $4}' process.log