2017-06-12 158 views
1

我試着去創建一個bash文件執行以下任務bash腳本和編輯CSV

1 - 我有一個名爲「ORDER.CSV」文件名需要進行文件的副本,並追加日期/時間到文件名 - 這是我能夠完成的

2-需要編輯上面創建的新csv文件中的特定字段。 DY列和第2行。這一直沒能做到。我需要插入日期bash腳本在這一行中運行。需要採用此格式DDMMYY

3-然後將系統上載到SFTP。我相信我知道如下所示。

#!/usr/bin/env bash 

林能把這個步驟下面命令來完成

# Copies order.csv and appends file name date/time 


#cp /mypath/SFTP/order.csv /mypath/SFTP/orders.`date +"%Y%m%d%H%M%S"`.csv 

需要幫助呼應新的文件名

echo "new file name " 

需要幫助下科拉姆DY行2.需要編輯領域以此格式插入當前日期MMDDYYYY

awk -v r=2 -v DY=3 -v val=1001 -F, 'BEGIN{OFS=","}; NR != r; NR == r {$c = val; 
print}' 

這應該連接到SFTP,它可以解決問題。

sshpass -p MyPassword sftp -o "Port 232323" 
[email protected] 

需要傳遞創建並放入SFTP服務器的新文件。

put /incoming/neworder/NEWFILEName.csv 

感謝

+0

什麼是列DY?它是列名(標題)? 「DY = 3」是什麼意思? – karakfa

+0

對不起,標題名稱。謝謝 – rookievmc

回答

1

我想這是你想要做什麼......

echo -e "h1,h2,h3,h4\n1,2,3,4" | 
awk -v r=2 -v c=3 -v v=$(date +"%d%m%y") 'BEGIN{FS=OFS=","} NR==r{$c=v}1' 

h1,h2,h3,h4 
1,2,120617,4 

找到從列名(未測試)

... | awk -v r=2 -v h="DY" -v v=$(date +"%d%m%y") ' 
     BEGIN {FS=OFS=","} 
     NR==1 {c=$(NF+1); for(i=1;i<=NF;i++) if($i==h) {c=i; break}} 
     NR==r {$c=v}1' 

列索引這樣做的風險是列名可能不匹配,在這種情況下,這會將該值添加爲新列。