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