我有一个字符串,
. . . . . . . . . . . .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。你能提供一个方法吗?
怎么样awk
:
echo '...' | awk '{print $NF}'
或者,如果您坚持sed
:
sed 's/.* \(.*\)/\1/'
事实证明,问题中的字符串不是您真正想要的,即您不在最后一个“单词”之后。在这种情况下,您可以逃脱:
sed 's/.* \(.*amazonaws.com\).*/\1/
echo "..." | sed 's/.*\(ec2[^ ]*\).*/\1/'
有问题的字符串必须有一些可识别的模式,例如,如果我们假设字符串总是以 .com 结尾,那么这应该可以工作:-
sed 's|^.* \([^ ]*\.com\).*$|\1|g'
你也可以使用 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
假设字符串总是以 ec2 开头:
sed 's/\(ec2.*\)/\1/'