我有这样的事情:
发送10包,接收10包,丢失0%
我只需要拿出"0%的丢包“怎么办?
我试过:
$tmp = "10 packets transmitted, 10 packets received, 0% packet loss"
echo $tmp | sed 's/.*%//'但是它只给我“丢包”--我需要"0%的丢包“。
发布于 2015-11-24 10:23:56
你可以试试这个
echo $tmp | cut -f3 -d","发布于 2015-11-24 10:34:29
做这件事的方法很多。
首先,如果您试图拆分shell中的变量,则需要正确地分配变量。例如:
tmp="10 packets transmitted, 10 packets received, 0% packet loss"注意:没有$用于赋值,也没有=周围的空格。
然后..。选项。
$ 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还有一个选项取决于POSIX外壳和管道,并将输入分成三个字段:
$ echo "$tmp" | while IFS=, read _ _ foo; do echo "$foo"; done
0% packet loss或者,如果bash是您的shell,您可以使用数组(而不是管道)来完成一些奇妙的事情:
$ IFS=',' read -r -a foo <<<"$tmp"
$ declare -p foo
declare -a foo='([0]="10 packets transmitted" [1]=" 10 packets received" [2]=" 0% packet loss")'
$ echo "${foo[2]}"
0% packet losshttps://stackoverflow.com/questions/33890745
复制相似问题