我正在尝试在我的Linux(Centos)框中使用以下列在csv中获取输出:
"timestamp" "date" "process name" "process id" "%memory"
以下是我的代码:
tdydate=$(date +'%m-%d-%Y %H:%M:%S')
ip=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
echo $tdydate "," $ip "," $(top -b -n 1 | awk 'BEGIN {RS = "\n"} NR>7 {print $12,$1,$10}') > procinfo.csv
但是,正如预期的那样,它不会在换行符中打印信息。然而,当我在下面做它时,它工作得非常好,并以所需的格式打印所有必需的信息: -
top -b -n 1 | awk 'BEGIN {RS = "\n"} NR>7 {print $12,$1,$10}' > procinfo.csv
当我尝试使用echo打印时间戳和ip时,格式变为单行。有人可以在我错的地方纠正我吗?
所需的输出应采用以下格式: -
第一列是时间戳,第二列是ip,第三列是进程名称,第四列是进程ID,第五列是%内存。它应该是逗号分隔值(csv作为输出)。
答案 0 :(得分:0)
你的echo语句应该是这样的:
echo "$tdydate , $ip , $(top -b -n 1 | awk 'NR>7 {print $12,$1,$10}')" > procinfo.csv
除了用双引号将整个事物包装起来以保留空格之外,我还删除了RS
的赋值。我不认为这是必要的,因为默认值是您平台上的换行符。