如何使用 grep 匹配其中带有空格的字符串?

如何使用 grep 匹配其中带有空格的字符串?

谁能帮我这个:

我正在尝试通过匹配字符串来提取时间戳。为此,我使用了 grep/awk 命令的组合。由于字符串在 [1] 之前有 4 个空格,在 [1] 之后有一个空格,我不知道该如何解决它。我是编程新手,所以需要一些帮助。

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

目的:它应该与 process.log 文件中的字符串匹配,并打印出与该行相关的时间戳。

答案1

空格不是这里的问题,它应该可以正常工作。
但括号[需要在正则表达式中转义。因此写:

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

在你的情况下,因为你想匹配一个固定的字符串而不是正则表达式,所以你应该使用grep -F。那么你就不需要转义了:

grep -F 'Starting    [1] TaskInit' process.log

答案2

您只需要转义方括号,因为它们具有特殊含义:

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

此外,我只会awk为此任务使用,为此目的你需要类似的东西:

awk '/Starting    \[1] TaskInit/ {print $4}' process.log

相关内容