2016-12-22 8 views
0

Eigentlich bin ich ziemlich neu in Shell-Skripten. Angenommen, ich habe eine 2 Spalten, die durch Komma getrennt sindZeile Wert hinzufügen Spalte

OFFER_DELETE_SC_LEVEL,146 
OFFER_DELETE_SC_LEVEL,25 
OFFER_DELETE_SC_LEVEL,18 
OFFER_DELETE_SC_LEVEL,17 
OFFER_DELETE_SC_LEVEL,27 

Ich habe eine andere Zeile. Dieser Zeilenwert kann sich ändern. Wie unter der Reihe haben 5 Zahlen durch Komma getrennt. Es kann mehr als 5 Zahlen (Beispiel: 1,5,3,7,8,9,10, ...)

41,42,43,44,45 

i wie Wert aus der Zeile hinzufügen möchten unter

OFFER_DELETE_SC_LEVEL,146,41 
OFFER_DELETE_SC_LEVEL,25,41 
OFFER_DELETE_SC_LEVEL,18,41 
OFFER_DELETE_SC_LEVEL,17,41 
OFFER_DELETE_SC_LEVEL,27,41 
OFFER_DELETE_SC_LEVEL,146,42 
OFFER_DELETE_SC_LEVEL,25,42 
OFFER_DELETE_SC_LEVEL,18,42 
OFFER_DELETE_SC_LEVEL,17,42 
OFFER_DELETE_SC_LEVEL,27,42 
OFFER_DELETE_SC_LEVEL,146,43 
OFFER_DELETE_SC_LEVEL,25,44 
OFFER_DELETE_SC_LEVEL,18,44 
OFFER_DELETE_SC_LEVEL,17,44 
OFFER_DELETE_SC_LEVEL,27,44 
OFFER_DELETE_SC_LEVEL,146,45 
OFFER_DELETE_SC_LEVEL,25,45 
OFFER_DELETE_SC_LEVEL,18,45 
OFFER_DELETE_SC_LEVEL,17,45 
OFFER_DELETE_SC_LEVEL,27,45 

kann es getan werden?

Antwort

1

können Sie dies versuchen;

#!/bin/bash 
for var in $(sed 's/,/\n/g' file2); do 
     awk -v var=$var '{print $0"," var} ' file1 
done 

Test;

$ ./test.sh 
OFFER_DELETE_SC_LEVEL,146,41 
OFFER_DELETE_SC_LEVEL,25,41 
OFFER_DELETE_SC_LEVEL,18,41 
OFFER_DELETE_SC_LEVEL,17,41 
OFFER_DELETE_SC_LEVEL,27,41 
OFFER_DELETE_SC_LEVEL,146,42 
OFFER_DELETE_SC_LEVEL,25,42 
OFFER_DELETE_SC_LEVEL,18,42 
OFFER_DELETE_SC_LEVEL,17,42 
OFFER_DELETE_SC_LEVEL,27,42 
OFFER_DELETE_SC_LEVEL,146,43 
OFFER_DELETE_SC_LEVEL,25,43 
OFFER_DELETE_SC_LEVEL,18,43 
OFFER_DELETE_SC_LEVEL,17,43 
OFFER_DELETE_SC_LEVEL,27,43 
OFFER_DELETE_SC_LEVEL,146,44 
OFFER_DELETE_SC_LEVEL,25,44 
OFFER_DELETE_SC_LEVEL,18,44 
OFFER_DELETE_SC_LEVEL,17,44 
OFFER_DELETE_SC_LEVEL,27,44 
OFFER_DELETE_SC_LEVEL,146,45 
OFFER_DELETE_SC_LEVEL,25,45 
OFFER_DELETE_SC_LEVEL,18,45 
OFFER_DELETE_SC_LEVEL,17,45 
OFFER_DELETE_SC_LEVEL,27,45 
+1

Schön, obwohl Sie eine [Useless Use of Cat] (https://en.wikipedia.org/wiki/Cat_ (Unix) #Useless_use_of_cat) in '$ vermeiden konnten (cat file2 | sed 's /,/\ n/g ') 'durch Schreiben von' $ (sed' s /,/\ n/g 'file2) 'direkt – Aserre

+0

@Aserre; Danke Info, ich updated ans. –

+0

funktioniert nicht :(. FYI Ich habe Sun OS. –

0

Könnten Sie bitte versuchen, auch zu folgen und lassen Sie mich wissen, wenn dies hilft.

awk 'FNR==NR{A[++num]=$0;next} {for(j=1;j<=NF;j++){for(i=1;i<=num;i++){print A[i]","$j}}}' file1 FS="," file2 

Ich hoffe, das hilft Ihnen.

+0

nicht helfen, bekommen leere Ausgabe :( –

+0

Es funktioniert gut für mich, können Sie bitte sicherstellen, dass keine Wagen Zeichen in Ihren Dateien sind? Auch die Beispiel Eingabe und Ausgabe, die Sie von oben erhalten und vor allem wie Sie sind Ausführen des Befehls, bitte posten Sie alle Details dazu. – RavinderSingh13

Verwandte Themen