2017-12-04 4 views
0
cat file1.txt 
set A B 1 
set C D E 2 
set E F 3 3 3 3 3 3 

cat file2.txt 
A;B;1; 
C;D.E;2; 
E;F;3 3 3 3 3 3; 

Bitte helfen Sie, das Format in Datei1.txt in Datei2.txt zu konvertieren, die Datei2.txt ist die Ausgabe. Ich habe gerade Eingang 3 Linien in file1.txt zum Beispiel nehmen, aber in der Tat gibt es viele Kommandozeilen glichen mit diesen 3 format.So des Shell-Befehls sollte auf jede Situation anpassen, in dem der Inhalt dieses 3-Format in file1.txt enthält.Bash_shell Verwenden Sie Shell, um drei Formate in einem Skript gleichzeitig in ein anderes zu konvertieren

+1

was sind die Regeln? warum gibt es einen Punkt zwischen D und E statt Semikolon? – karakfa

+0

ja. es ist die Regel, dass, wenn eine Zeile enthält drei Worte wie „CDE“, außer „set“ und die Nummer, wird das zweite Wort des dritte Wort mit Punkt verbinden, nicht Semikolon, wenn eine Zeile zwei Worte wie „AB“ enthält, außer " set“und Nummer werden die beiden Wörter mit Semikolon verbinden. –

Antwort

1
echo "set A B 1 
set C D E 2 
set E F 3 3 3 3 3 3 " | sed -r 's/set (.) /\1;/;s/([A-Z])*(([A-Z]))/\1.\3/g;s/([A-Z]) ([0-9])/\1;\2/;s/ ?$/;/' 
A;B;1; 
C;D.E;2; 
E;F;3 3 3 3 3 3; 
Verwandte Themen