【发布时间】:2020-03-18 13:29:59
【问题描述】:
试图从 a: 中获取子字符串
foo-bar-8568887b6f-d95wk 1/1 跑步 0 48m
得到一个:
foo-bar-8568887b6f-d95wk
使用:
sed 's/^.\((foo-bar)[^\s]+\).*$/\1/'
但是,这将返回整个字符串:
foo-bar-8568887b6f-d95wk 1/1 Running 0 48m
在这种情况下,正确的 sed 命令是什么?
【问题讨论】:
-
[^\s]匹配除\和s之外的任何字符,您需要[^[:space:]]*或[^[:space:]]\{1,\}。此外,您的字符串不包含ncc-full-druid-broker -
目标是获取
foo-bar和第一个空格之间的子串。 -
这里你可以使用
awk '$0 ~ /^foo-bar/{print $1}'或sed -n 's/^.*\(foo-bar[^[:space:]]*\).*$/\1/p' -
好的,这可以作为一个答案。
-
为什么不只是
awk '{print $1}'?如果你需要更多,那么edit你的问题可以提供一个更现实的例子。