在 bash 中,我试图在命令 (ntp) 的输出中搜索 (grep) 以查找特定字符串。但是,输出中的一列是不断变化的。因此,对于该列,它可以是任何字符。
我可能没有正确执行此操作,但*
并没有像我希望的那样工作。
ntpq -p | grep "10 l * 64 377 0.000 0.000 0.001"
星号正在用第二个替换从 - 变为 1-64 的列。
任何帮助将非常感激!
在 bash 中,我试图在命令 (ntp) 的输出中搜索 (grep) 以查找特定字符串。但是,输出中的一列是不断变化的。因此,对于该列,它可以是任何字符。
我可能没有正确执行此操作,但*
并没有像我希望的那样工作。
ntpq -p | grep "10 l * 64 377 0.000 0.000 0.001"
星号正在用第二个替换从 - 变为 1-64 的列。
任何帮助将非常感激!
*
正则表达式中的A*
与 shell 通配中的 a 不同。以下来自 regex(7) 联机帮助页:
An atom followed by '*' matches a sequence of 0 or more matches of the atom.
这意味着在您的正则表达式中,您说的是“匹配 0 个或更多空间”。如果要匹配 0 个或多个任意字符,则需要.*
.
ntpq -p | grep "10 L .* 64 377 0.000 0.000 0.001"
虽然,您可能想要匹配“一个或多个任意字符”:
ntpq -p | grep -E "10 L .+ 64 377 0.000 0.000 0.001"
更好的是,只匹配数字或-
:
ntpq -p | grep -E "10 L [[:digit:].\-]+ 64 377 0.000 0.000 0.001"