2016-05-05 18 views
1

Ich möchte Leerzeichen oder Punkt drucken, wenn meine Zeilen identisch sind.Drucken Raum, wenn die Zeilen in awk die gleichen sind

Siehe Beispiel:

INPUT:

row1 xx yy zz 
row1 xx yy zz 
row1 xx yy zz 
row2 aa bb cc 
row2 aa bb cc 
row3 gg hh oo 

OUTPUT:

row1 xx yy zz 
    xx yy zz 
    xx yy zz 
row2 aa bb cc 
    aa bb cc 
row3 gg hh oo 

Gibt es eine einfache Möglichkeit, nur Raum zu drucken?

Vielen Dank für jede Hilfe.

Antwort

6
$ awk '{c=$1} c==p{gsub(/./," ",$1)} {p=c} 1' file 
row1 xx yy zz 
    xx yy zz 
    xx yy zz 
row2 aa bb cc 
    aa bb cc 
row3 gg hh oo 
+1

das ist eine großartige Lösung! Ich danke dir sehr! – Paul

+0

Ed, kannst du bitte den Befehl erklären? Auch wenn Sie Tabulatoren anstatt Leerzeichen wollten, wohin würden sie in diesem Befehl gehen? – Kg123

+0

@ Kg123 p ist für vorheriges und c ist für gegenwärtiges. DENKEN Sie darüber nach und ich bin mir sicher, dass Sie herausfinden können, was es tut, aber wenn Sie eine spezifische Frage dazu haben, lassen Sie es mich wissen. Was ist deine Frage zu Tabs? Wo willst du sie hin? –

Verwandte Themen