So fügen Sie einer anderen Datei eine Spalte hinzu

So fügen Sie einer anderen Datei eine Spalte hinzu

Angenommen, dies ist meine Datei mit dem Namen myFile1

1 10
2 20
3 30
4 40
5 50
6 60

weiß, dass ich dem weitere Spalten hinzufügen möchte. Diese Spalte befindet sich in der Datei myFile2.

10
11
12
13
14
15
16

. gibt es eine Möglichkeit, myFile2 zu myFile1 hinzuzufügen, um diese Tabelle zu erstellen:

1 10 10
2 20 11
3 30 12
4 40 13
5 50 14
6 60 15

Antwort1

pasteist hier ziemlich praktisch, wird Sie aber bestrafen, wenn die Anzahl der Werte ungleich ist:

$ paste -d' ' myFile{1,2}
1 10 10
2 20 11
3 30 12
4 40 13
5 50 14
6 60 15
 16

Wenn Sie die in der zweiten Datei verwendeten Zeilen beliebig auf die erste beschränken möchten, können Sie dies tun. Es wird dann jedoch etwas langsamer sein und mehr RAM verbrauchen (was bei einem so kleinen Datensatz jedoch keine Rolle spielt).

$ paste -d' ' myFile1 <(head -n$(cat myFile1 | wc -l) myFile2)
1 10 10
2 20 11
3 30 12
4 40 13
5 50 14
6 60 15

Antwort2

Konnte nicht widerstehen, die ausführliche Option hinzuzufügen (Python-Skript)

#!/usr/bin/env python3

with open("file1") as l:
    l = [item.replace("\n", "") for item in l]

with open("file2") as l2:
    l2 = [item.replace("\n", "") for item in l2]

for item in [l[i]+" "+l2[i] for i in range(0, len(l))]:
    print(item)

>>> 
1 10 10
2 20 11
3 30 12
4 40 13
5 50 14
6 60 15
>>> 

Um die Änderungen sofort in Datei1 zu schreiben, wäre der Code:

#!/usr/bin/env python3

with open("file1", "r") as l:
    l = [item.replace("\n", "") for item in l]

with open("file2", "r") as l2:
    l2 = [item.replace("\n", "") for item in l2]

with open("file1", "wt") as edit:
    for item in [l[i]+" "+l2[i] for i in range(0, len(l))]:
        edit.write(item+"\n")

Falls es auch eine Möglichkeit gibt, dass Datei2wenigerZeilen als Datei1, der folgende Code sorgt für das korrekte Hinzufügen der Spalte und das mögliche Hinzufügen weiterer Spalten:

#!/usr/bin/env python3

with open("file1", "r") as l1:
    l1 = [item.replace("\n", "") for item in l1]

with open("file2", "r") as l2:
    l2 = [item.replace("\n", "") for item in l2]

for i in range(0, len(l1)):
    try:
        print(l1[i]+" "+l2[i])
    except IndexError:
        print(l1[i]+"  ")

verwandte Informationen