2017-06-12 8 views
1

Im Versuch, ein Bash-Datei zu erstellen, die folgende AufgabeBash-Skript und bearbeiten CSV

1- ich einen Dateinamen „ORDER.CSV“ benötigen, um eine Kopie dieser Datei und fügen Sie das Datum genannt haben zu tun/Zeit zum Dateinamen - Das konnte ich erledigen

2- Muss ein bestimmtes Feld in der neuen csv-Datei bearbeiten, die ich oben erstellt habe. Spalte DY und Zeile 2. Das war nicht möglich. Ich muss Datum einfügen Bash-Skript wird in dieser Zeile ausgeführt. Muss in diesem Format sein DDMMYY

3- dann System Upload auf SFTP. Dies glaube ich habe es herausgefunden, wie unten gezeigt.

#!/usr/bin/env bash 

Lage Im diesem Schritt erhalten

mit unter Kommando
# 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 

Brauchen neuen Dateinamen echo helfen zu

echo "new file name " 

Benötigen Sie Feld unter Colum DY Row 2. Bedarf bearbeiten helfen aktuelles Datum in dieses Format einfügen MMDDJJJJ

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

Dies sollte eine Verbindung zu SFTP, die es mit ausgibt, Probleme.

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

Notwendigkeit, neue Datei zu übergeben, die erstellt und in SFTP-Server abgelegt wurde.

put /incoming/neworder/NEWFILEName.csv 

Dank

+0

Was ist Spalte DY? Ist es der Spaltenname (Header)? Was bedeutet "DY = 3"? – karakfa

+0

Entschuldigung das ist der Headername. Vielen Dank – rookievmc

Antwort

1

Ich denke, das ist, was Sie tun wollen ...

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 

den Spaltenindex aus dem Spaltennamen zu finden (nicht getestet)

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

Das Risiko besteht darin, dass der Spaltenname nicht übereinstimmt. In diesem Fall wird der Wert als neue Spalte hinzugefügt.

Verwandte Themen