我有这样的事情:
"传输10个数据包,接收10个数据包,0%丢包"
我只需要取出" 0%丢包"怎么做?
我试过了:
$tmp = "10 packets transmitted, 10 packets received, 0% packet loss"
echo $tmp | sed 's/.*%//'
但它只给了我"丢包"我需要" 0%丢包"
答案 0 :(得分:0)
你可以试试这个
echo $tmp | cut -f3 -d","
答案 1 :(得分:0)
有很多方法可以做到这一点。
首先,如果您尝试在shell中拆分变量,则需要正确分配变量。例如:
PREFIX
CONSTRUCT { ... }
WHERE {
BIND () {
SELECT ...
WHERE {
...
}
GROUP BY ...
}
}
注意 - 没有tmp="10 packets transmitted, 10 packets received, 0% packet loss"
用于分配,$
周围没有空格。
然后..选项。
=
这些解决方案都使用管道。虽然它们非常便携,但如果您使用的是POSIX shell(可能是它),您可以使用它:
$ echo "$tmp" | awk -F',' '{print $3}'
0% packet loss
$ echo "$tmp" | cut -d, -f3
0% packet loss
$ echo "$tmp" | sed 's/.*, //'
0% packet loss
另一个选项取决于POSIX shell和管道,并将您的输入拆分为三个字段:
$ echo "${tmp##*, }"
0% packet loss
或者如果bash是你的shell,你可以使用数组(并且没有管道)来做奇特的事情:
$ echo "$tmp" | while IFS=, read _ _ foo; do echo "$foo"; done
0% packet loss