2017-01-16 9 views
0

Ich möchte eine Tabelle erstellen, die so aussieht, wo ich die # an der Vorderseite von jedem $ 2 und den Title-Header anzeigen, aber ich möchte es nicht in meiner Datei speichern bekamUnix - mit awk in Tabellenformat drucken

Name   ID    Gender 

John Smith #4567734D  Male 
Kyle Toh  #2437882L  Male 
Julianne .T #0324153T  Female 

ich ein Ergebnis wie dieses stattdessen:

Name   ID    Gender 
# 
Name   ID    Gender 
John Smith #4567734D  Male 
Name   ID    Gender 
Kyle Toh  #2437882L  Male 
Name   ID    Gender 
Julianne .T #0324153T  Female 

mit diesem Befehl:

awk -F: ' {print "Name:ID:Gender\n"} 
      {print $1":#"$2":"$3}' data.txt |column -s ":" -t 
+1

Bitte bearbeiten Sie Ihre Frage, um uns auch die Beispieleingabe zu zeigen. –

Antwort

0

drucken Sie die hea nur in der ersten Zeile Ders:

awk -F: 'NR==1 {print "Name:ID:Gender\n"} {print $1":#"$2":"$3}' 

oder:

awk -F: 'BEGIN {print "Name:ID:Gender\n"} {print $1":#"$2":"$3}' 

Erläuterung:

Ein awk-Programm besteht aus Ausdrücken in Form von:

CONDITION { ACTIONS } [ CONDITION { ACTIONS }, ... ] 

... wo ZUSTAND und AKTION optional. Wenn CONDITION fehlt, wie:

... dann würde ACTIONS auf jede Eingabezeile angewendet werden. Im obigen Fall haben wir zwei Ausdrücke:

# Only executed if NR==1 
NR==1 {print "Name:ID:Gender\n"} 

# CONDITION is missing. ACTIONS will be applied to any line of input 
{print $1":#"$2":"$3} 
+1

Oder vielleicht typischer in einem Anfangsblock: 'BEGIN {print 'Name: ID: Gender \ n"} ' – jas

+0

Sicher,' BEGIN' kann auch verwendet werden. – hek2mgl

+0

@ hek2mgl Jetzt, obwohl der Titel nicht mehr dupliziert, wie vermeide ich das Drucken der # in der zweiten Zeile und halten Sie es leer? – Monomoni