2017-06-12 20 views
1

イムは/このファイルのコピーを作成し、日付を追加する必要がありますファイル名までの時間 - これはできましたバッシュスクリプトおよび編集CSV

2上記で作成した新しいcsvファイルの特定のフィールドを編集する必要があります。列DYと行2。これはできませんでした。私はこの行で実行されている日付のbashスクリプトを挿入する必要があります。この形式にする必要があります。DDMMYY

3-次にSFTPへのシステムアップロードがあります。これは私が次のように考え出したと思う。

この手順は、コマンド以下

# 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 

を成し遂げることができImは

新しいファイル名をエコーする手助けが必要
#!/usr/bin/env bash 

echo "new file name " 

Colum 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' 

これを実行するリスクは列名が一致しないことがあります。その場合、これは値を新しい列として追加します。

関連する問題