2016-04-27 6 views
0

I 2 Textdateien haben:Sortieren einer Datei wie eine andere Datei

1. Datei:

1 C 
1 D 
1 B 
1 A 

2. Datei:

B 
C 
D 
A 

ich erste Datei wie folgt sortiert werden soll:

1 B 
1 C 
1 D 
1 A 

Können Sie mir mit einem Skript in b helfen Asche (oder Befehl).

+0

jede Zeile nur durch '1' Charakter eines Start Hat nd Raum? Oder kann es irgendeine Zahl/Schnur sein? –

+0

nur 1 und Leerzeichen. Es ist eine Nummer (gleich zu jeder Zeile) – astonished

+0

Ich kann erste Spalte und Leerzeichen entfernen. Jetzt versuche ich, die erste Datei wie die zweite (Zeile für Zeile) zu sortieren. – astonished

Antwort

0

und was nur die erste Datei zu ignorieren und dies tun?

echo -n > result-file.txt # empty result file if already created 
while read line; do 
    echo "1 $line" >> result-file.txt 
done < file2.txt 

Es wäre sinnvoll, wenn das Format Ihrer Dateien spezifisch ist.

+1

anstelle von 'cat file | während ... ', ist es besser zu sagen" während ... fertig fedorqui

+1

Es ist viel effizienter innerhalb von sed etc. zu iterieren wie 'sed 's /.*/ 1 & /' file2.txt' – pixelbeat

0

Ich löste das Problem sort (i die erste Spalte eliminiert) und dieses Skript verwenden

awk 'FNR == NR { lineno[$1] = NR; next} 
{print lineno[$1], $0;}' ids.txt resultpartial.txt | sort -k 1,1n | cut -d' ' -f2- 

Jetzt will ich (erste Spalte wie vor)

1 .....

hinzufügen
0

Unter der Annahme, dass das „Art“ Feld keine duplizierten Werte enthält:

awk 'FNR==NR {line[$2] = $0; next} {print line[$1]}' file1 file2 
Verwandte Themen