2016-04-25 4 views
0

Ich habe eine Bar getrennte Textdatei, die wie folgt aussieht:Wie Blockreihen von Textdatei in bash?

stringC|rest-of-lineC3 
stringC|rest-of-lineC1 
stringC|rest-of-lineC2 
stringA|rest-of-lineA2 
stringA|rest-of-lineA1 
stringB|rest-of-lineB4 
stringB|rest-of-lineB1 
stringB|rest-of-lineB3 
stringB|rest-of-lineB2 

Ich brauche es durch die Zeichenfolge zu blockieren-Art vor den | ohne sekundäre Art zu tun, was nach der Bar kommt. So das Beispiel unten, sollten Sie in sortiert werden:

stringA|rest-of-lineA2 
stringA|rest-of-lineA1 
stringB|rest-of-lineB4 
stringB|rest-of-lineB1 
stringB|rest-of-lineB3 
stringB|rest-of-lineB2 
stringC|rest-of-lineC3 
stringC|rest-of-lineC1 
stringC|rest-of-lineC2 

aber NICHT in:

stringA|rest-of-lineA1 
stringA|rest-of-lineA2 
stringB|rest-of-lineB1 
... 

Gibt es eine Möglichkeit, dies in einem Bash-Skript zu tun sort oder andere Befehle?

Wie kann ich das gleiche Ergebnis wie oben in Fall die Original-Datei erhalten, ist nicht in den Blöcken, also etwa wie folgt aussieht:

stringC|rest-of-lineC3 
stringA|rest-of-lineA2 
stringC|rest-of-lineC1 
stringA|rest-of-lineA1 
stringB|rest-of-lineB4 
stringB|rest-of-lineB1 
stringC|rest-of-lineC2 
stringB|rest-of-lineB3 
stringB|rest-of-lineB2 

Antwort

3

Art mit -s Option für eine stabile

sort -st'|' -k1,1 file 

Anfangsblöcke spielen keine Rolle, sollten für beide funktionieren.

Verwandte Themen