I am trying to parse some data from ifconfig output with sed, but I am not able to do it correctly. I want the command to extract just the number I am after.
For exa
By default, sed prints out each line of the input, after any changes you've made to the line. Since you only want to print out something from the line with "RX bytes", you tell sed not to print every line (-n
). So you want to specify the range on which the substitution should be performed, only the line that matches RX bytes
, and then do the substitution and explicitly print the results.
ifconfig eth1 | sed '/RX bytes/{s|.*RX bytes:\([0-9]*\).*|\1|; p}'
IMHO there is no standard for the ifconfig
- output. It (may) change from system to system and from release to release.
If I were you, I would go for the /sys
file system. You get all the information also from there - without the need of post-processing.
$ cat /sys/class/net/eth0/statistics/rx_bytes
37016050
grep
:ifconfig | grep -oP '(?<=RX bytes:)[0-9]*'
awk
:ifconfig | awk -F: '/RX bytes/{print $2+0}'