Ich habe Hunderte von großen Textdateien, fileAn
und fileBn
, in zwei Ordnern A
und B
, von denen ich die ersten sechs Spalten jeder Datei austauschen möchte. Ich würde dann die neuen Dateien fileCn
und fileDn
in den Ordnern C
und speichern. Es gibt eine gleiche Anzahl von Dateien in A
und B
und die Dateilängen sind identisch.Tausche Textdateispalten und erstelle neue Datei
Wie kann dies mit bash oder regex erreicht werden?
Hier ist ein Ausschnitt aus fileA1
:
"2015-11-11 00:00:00.00",59841,0.327,3.275,1.89275,32.048,8,32,11.61
"2015-11-11 00:00:00.10",59842,0.086,3.56975,2.20325,32.10205,9,32,11.57
"2015-11-11 00:00:00.20",59843,0.26575,3.343,1.8285,32.06717,10,32,11.57
"2015-11-11 00:00:00.30",59844,-0.1915,3.28175,1.793,32.12122,11,32,11.57
fileB1
:
"2015-11-11 00:00:00.00",59841,2.48975,2.8535,-0.6575,32.13168,9
"2015-11-11 00:00:00.10",59842,2.38975,3.10525,-0.62025,32.21362,10
"2015-11-11 00:00:00.20",59843,2.224,3.09825,-0.43375,32.19968,11
"2015-11-11 00:00:00.30",59844,2.102,3.029,-0.51825,32.21539,12
Neue Datei fileC1
, ersten sechs Spalten fileB1
von ersten sechs Spalten von fileA1
ersetzt:
"2015-11-11 00:00:00.00",59841,0.327,3.275,1.89275,32.048,9
"2015-11-11 00:00:00.10",59842,0.086,3.56975,2.20325,32.10205,10
"2015-11-11 00:00:00.20",59843,0.26575,3.343,1.8285,32.06717,11
"2015-11-11 00:00:00.30",59844,-0.1915,3.28175,1.793,32.12122,12
Neue Datei fileD1
, erste sechs Spalten fileA1
ersetzt durch erste sechs Spalten von fileB1
:
"2015-11-11 00:00:00.00",59841,2.48975,2.8535,-0.6575,32.13168,8,32,11.61
"2015-11-11 00:00:00.10",59842,2.38975,3.10525,-0.62025,32.21362,9,32,11.57
"2015-11-11 00:00:00.20",59843,2.224,3.09825,-0.43375,32.19968,10,32,11.57
"2015-11-11 00:00:00.30",59844,2.102,3.029,-0.51825,32.21539,11,32,11.57
hatte ich einen Blick auf dem paste
Befehl kann aber nicht einen Weg machen dies zu einem Batch-Prozess finden.
Haben Sie auch versuchen, 'cut' zu benutzen? –
nur 'paste -d, <(cut fileA1 -d, -f1-6) <(cut fileB1 -d, -f7)> fileC1' und' paste -d, <(cut fileB1 -d, -f1-6) <(cut fileA1 -d, -f7-9)> fileD1' –
@JoseRicardoBustosM. Vielen Dank. Ich habe das in einer Datei getestet und es hat funktioniert. Ich habe versucht, dies rekursiv für eine große Anzahl von Dateien mit * fileA1 = find/path/to/folderA -name '* .csv' * und file * fileB1 = find/path/to/folderB -name '* anzuwenden. csv '*, aber ich bekomme einen Syntaxfehler, wenn ich dies auf den Befehl * paste * anwende. – Buzz