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

Man*_*mar 2 command-line bash grep awk

谁能帮我这个:

我试图通过匹配字符串来提取时间戳。为此,我使用了 grep/awk 命令的组合。由于刺痛在 [1] 之前有 4 个 spces,在 [1] 之后有 1 个,我很困惑如何解决它。我是编程新手,所以在这里需要一些帮助。

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

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

pLu*_*umo 5

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

grep 'Starting    \[1] TaskInit' process.log
Run Code Online (Sandbox Code Playgroud)

在您的情况下,由于您想匹配固定字符串而不是正则表达式,因此应该grep -F改用。那么你不需要逃避:

grep -F 'Starting    [1] TaskInit' process.log
Run Code Online (Sandbox Code Playgroud)