写入两列
Write to two columns
我正在尝试记录一些数据,第一个是 cpu 内核和内存的数量。如何将 CPU 写入第一列并将内存写入第二列?
#!/bin/bash
while true;
do nproc >> system.log & free -m | grep Mem: | awk '{print }' >> system.log
sleep 5
done
system.log:
1246
1
1246
1
1246
1
1246
1
1246
1
1246
1
1246
1
1246
我希望它看起来像这样:
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
这将是最简单的
$ pr -2ats' ' file
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246
或者,类似地
$ paste -d' ' - - <file
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246
和强制awk
解决方案
$ awk 'ORS=NR%2?FS:RS' file
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246
与您的脚本相结合
... grep Mem: | awk '{ORS=NR%2?FS:RS; print }'
你可以这样做:
#!/bin/sh
while true;
do
echo "`nproc` `free -m | grep Mem: | awk '{print }'`" >> system.log
sleep 5
done
使用 GNU bash:
printf "%s %s\n" $(< file)
试一试:
#!/bin/bash --
while true; do
printf "%s %s\n" $(nproc) "$(free -m | grep Mem: | awk '{print }')" >> system.log
sleep 5
done
测试:
$ chmod +x log_monitor.sh
$ ./log_monitor.sh
^C
$ cat system.log
8 16082
8 16082
8 16082
8 16082
8 16082
我正在尝试记录一些数据,第一个是 cpu 内核和内存的数量。如何将 CPU 写入第一列并将内存写入第二列?
#!/bin/bash
while true;
do nproc >> system.log & free -m | grep Mem: | awk '{print }' >> system.log
sleep 5
done
system.log:
1246
1
1246
1
1246
1
1246
1
1246
1
1246
1
1246
1
1246
我希望它看起来像这样:
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
这将是最简单的
$ pr -2ats' ' file
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246
或者,类似地
$ paste -d' ' - - <file
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246
和强制awk
解决方案
$ awk 'ORS=NR%2?FS:RS' file
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246
与您的脚本相结合
... grep Mem: | awk '{ORS=NR%2?FS:RS; print }'
你可以这样做:
#!/bin/sh
while true;
do
echo "`nproc` `free -m | grep Mem: | awk '{print }'`" >> system.log
sleep 5
done
使用 GNU bash:
printf "%s %s\n" $(< file)
试一试:
#!/bin/bash --
while true; do
printf "%s %s\n" $(nproc) "$(free -m | grep Mem: | awk '{print }')" >> system.log
sleep 5
done
测试:
$ chmod +x log_monitor.sh
$ ./log_monitor.sh
^C
$ cat system.log
8 16082
8 16082
8 16082
8 16082
8 16082