我有一个字符串,
. . . . . . . . . . . .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。你能提供一种方式吗?
答案 0 :(得分:3)
awk
:
echo '...' | awk '{print $NF}'
或者如果你坚持sed
:
sed 's/.* \(.*\)/\1/'
事实证明,问题中的字符串并不是你真正想要的,即你不是在最后一个"字#34;之后。在这种情况下,你可以逃脱:
sed 's/.* \(.*amazonaws.com\).*/\1/
答案 1 :(得分:2)
echo "..." | sed 's/.*\(ec2[^ ]*\).*/\1/'
答案 2 :(得分: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
答案 3 :(得分:1)
有问题的字符串必须有一些可识别的模式,如果我们假设字符串以.com结尾,那么这应该有效: -
sed 's|^.* \([^ ]*\.com\).*$|\1|g'
答案 4 :(得分:0)
假设字符串始终以ec2开头:
sed 's/\(ec2.*\)/\1/'