我正在尝试计算以太网接口上使用的带宽(1000 Mbit/s)。为了测试我的脚本,我使用iperf工具来生成巨大的带宽。
我现在面临的问题是,当eth0_rx1与eth0_rx2变得其比最大32位的值大的值。我得到的差异为 0。
不知何故
printf 'eth0 Download rate: %s B/s\n' "$((eth0_rx2-eth0_rx1))"
Run Code Online (Sandbox Code Playgroud)
给出了正确的值,但是当尝试使用
eth0_diff=expr $eth0_rx2 - $eth0_rx1
Run Code Online (Sandbox Code Playgroud)
我得到的值为 0。
有没有办法处理超过 32 位rx_bytes或tx_bytes超过 32 位的情况?
我不确定这是计算已用带宽的优雅方法。如果没有,请建议其他替代方法。
示例输出:
eth0_rx1 = 2134947002 \
eth0_rx2= 2159752166 \
eth0 Download rate: 24805164 B/s \
eth0_diff = 12536645 \
eth0_rx_kB = 12242 \
eth0_rx_kB_100 = 1224200 \
eth0_rx_kB_BW = 9
eth0_rx1 = 2159752166 \
eth0_rx2= 2184557522 \
eth0 Download rate: 24805356 B/s \
eth0_diff = 0 …Run Code Online (Sandbox Code Playgroud) 我想用来awk将输入文件的内容排序到不同的输出文件中。
假设以下输入文件:
$cat sample.txt
START
Unix
Linux
START
Solaris
Aix
SCO
Run Code Online (Sandbox Code Playgroud)
该awk程序
awk '/START/{x="F"++i;}{print > x}' sample.txt
Run Code Online (Sandbox Code Playgroud)
将以下输出生成到文件中:
$ cat F1
awk '/START/{x="F"++i;}{print > x}' sample.txt
Run Code Online (Sandbox Code Playgroud)
$ cat F2
START
Unix
Linux
Run Code Online (Sandbox Code Playgroud)
当我将此技术应用于我的实际用例时,
awk '/Certificate Revocation List (CRL):/{x="F"++i;}{print > x}' test_cert.pem
Run Code Online (Sandbox Code Playgroud)
不提取内容从 Certificate Revocation List (CRL):
相反,它给出了以下错误:
START
Solaris
Aix
SCO
Run Code Online (Sandbox Code Playgroud)
我尝试将模式放在引号中,但它不起作用,不确定模式是否是多字的,我们如何提取内容。
该test_cert.pem如下外观:
awk '/Certificate Revocation List (CRL):/{x="F"++i;}{print > x}' test_cert.pem
Run Code Online (Sandbox Code Playgroud)