0

我有一个字符串,

. . . . . . . . . . . .starting  i-8f1031ed .. started  aashish.292 ec2-23-20-213-73.compute-1.amazonaws.com in 36 s

我想提取,

ec2-2-2-2-7.compute-1.amazonaws.com

使用 sed。你能提供一个方法吗?

4

5 回答 5

3

怎么样awk

echo '...' | awk '{print $NF}'

或者,如果您坚持sed

sed 's/.* \(.*\)/\1/'

事实证明,问题中的字符串不是您真正想要的,即您不在最后一个“单词”之后。在这种情况下,您可以逃脱:

sed 's/.* \(.*amazonaws.com\).*/\1/
于 2013-04-11T07:19:33.283 回答
2
echo "..." | sed 's/.*\(ec2[^ ]*\).*/\1/'
于 2013-04-11T07:29:43.317 回答
1

有问题的字符串必须有一些可识别的模式,例如,如果我们假设字符串总是以 .com 结尾,那么这应该可以工作:- sed 's|^.* \([^ ]*\.com\).*$|\1|g'

于 2013-04-11T09:11:59.420 回答
1

你也可以使用 grep:

grep -o 'ec[^ ]*' <<<". . . . . . . . . . . .starting  i-8f1031ed .. started  aashish.292 ec2-23-20-213-73.compute-1.amazonaws.com in 36 s"

输出:

ec2-23-20-213-73.compute-1.amazonaws.com
于 2013-04-11T07:52:31.260 回答
0

假设字符串总是以 ec2 开头:

sed 's/\(ec2.*\)/\1/'

于 2013-04-11T07:23:30.790 回答