0
我有一个csv,我将在每天更新。 CSV文件的格式如下:使用awk更新csv文件
Name,Priority,UsedBy,Uptime
"server1","3","owner1",100
"server2","3","owner2",200
"server3","3","owner3",300
我写了一个bash脚本来更新每天的基础上的第4列的值,它工作正常。但是我想用awk简化代码到单线程。运行时间值取决于第一列的服务器值。我的脚本将使用下面的正则表达式通过SSH来获得每个服务器的正常运行时间值:
ssh $serverName uptime | sed 's/.*up \([^,]*\), .*/\1/'
我还在想出来的过程中,将张贴在这里,以加快解决问题的时间。任何想法或给予的帮助将不胜感激。
最新更新
我试过如下图所示,但这些代码无济于事:
#!/bin/bash
uptime() {
myUptime=$(ssh $1 uptime | sed 's/.*up \([^,]*\), .*/\1/')
echo $myUptime
}
export -f uptime
awk 'BEGIN{FS=OFS=","}NR>1{value=system("bash -c '\''uptime "$1"'\''") ;$4=value}1' temp.csv
,并输出如下:
[[email protected] tmp]# ./tempScript.sh
"Name","Priority","UsedBy","Uptime"
100 days
"server1","3","owner1",0
200 days
"server2","3","owner2",0
300 days
"server3","3","owner3",0
CSV文件仍然具有相同旧数据根本没有修改。
你是说在'Name'中的'1','2','3'对应于'100','200'等在正常运行时间下吗? – Inian
在此示例中,server1的运行时间为100天,server2为200天,server3为300天。明天server1将是101天,server2是201天,server3是301天。如果任何一台服务器沿途重新启动,则正常运行时间将为0或1天。当cron每天运行时。 – abduls85