Ich möchte Textzeilen nach einer bestimmten Stelle im Text sortieren (die Textzeilen haben keine Leerzeichen oder Spalten). Ich habe eine Lösung dafür ausgearbeitet, möchte aber wissen, ob es eine direktere und einfachere Möglichkeit gibt, dies zu tun.
Meine derzeitige Methode hierfür besteht darin, einen Umbruch zu verursachen, d. h. an derselben Stelle in jeder Zeile eine neue Spalte zu erstellen (direkt vor dem Punkt, nach dem ich sortieren möchte – das ist Sn_L001_Rn), dann nach dieser Spalte zu sortieren und die beiden Spalten anschließend wieder zusammenzufügen. Das funktioniert, scheint aber übermäßig kompliziert und umständlich. Ich habe Beiträge zum Erstellen eines Punktesystems mit awk gesehen, aber da meines mindestens bis 96 gehen wird, scheint dies langwierig. Ich habe auch gesehen, dass SQLite anwendbar sein könnte, aber dies scheint auch genauso langwierig zu sein. Ich entschuldige mich, wenn diese Frage bereits gestellt wurde, aber bisher habe ich keine einfache Methode gefunden, sie zu lösen.
Hier sind einige Beispieleingaben:
SOON_S2_L001_R1_001.txt
SOON_S2_L001_R2_001.txt
HELLO_S4_L001_R1_001.txt
HELLO_S4_L001_R2_001.txt
BASH_S1_L001_R1_001.txt
BASH_S1_L001_R2_001.txt
WORLD_S3_L001_R1_001.txt
WORLD_S3_L001_R2_001.txt
Gewünschte Ausgabe:
BASH_S1_L001_R1_001.txt
BASH_S1_L001_R2_001.txt
SOON_S2_L001_R1_001.txt
SOON_S2_L001_R2_001.txt
WORLD_S3_L001_R1_001.txt
WORLD_S3_L001_R2_001.txt
HELLO_S4_L001_R1_001.txt
HELLO_S4_L001_R2_001.txt
Um die Komplexität noch weiter zu erhöhen, möchte ich, dass in einer Situation, in der es mehr als 1 gleiche Sn gibt, der Name berücksichtigt wird (obwohl ich denke, dass dies möglicherweise mithilfe von Flags in auflösbar ist sort
).
Antwort1
sort -t_ -k2 infile
sortiert die Daten mit dem 2. Schlüssel und dem Unterstrich als Trennzeichen.