Verwenden Sie den Kopf, um einen Charakter zu sehen

289
user341814

Ich habe einige C-Quelldateien und viele von ihnen haben oben einen einzigen, einzeiligen Kommentar, der eine kurze Beschreibung dessen enthält, was das Programm macht (ich habe nichts komplexes getan, um einen vollständigen Absatz zu rechtfertigen.) Ich frage mich, ob es möglich war, den Kopf für die erste zu verwenden #, da dies meine erste Präprozessoranweisung sein würde. Wenn es Zeilennummern druckte, wäre das auch ein Bonus.

1
klingt wie ein Job für Grep? ernie vor 9 Jahren 0

1 Antwort auf die Frage

2
lornix

Grep ist wahrscheinlich eine bessere Lösung, wenn Sie den Kontextwechsel verwenden -B:

grep -B999 -m 1 "^#" file.c 

oder mit langen Optionsnamen:

grep --before-context 999 --max-count 1 "^#" file.c 

Dies findet das Muster "^#"(ein '#', das am Anfang der Zeile verankert ist) und zeigt bis zu 999 Zeilen davor, wobei "^ #" maximal 1 gefunden werden kann.

Finden Sie also im Grunde das erste "^ #", zeigen Sie bis zu 999 Zeilen davor und beenden Sie den Vorgang. Möglicherweise möchten Sie durch den Kopf pfeifen, um das gefundene "^ #" zu entfernen:

grep -B999 -m1 "^#" file.c | head -n -1 

Was wird die letzte Zeile abschneiden.

Ich bin damit einverstanden, dass -B999dies ein bisschen übertrieben sein könnte, aber ich würde es hassen, alles, was Sie später in Ihrer Karriere schreiben, abzuschneiden, nachdem Sie wortreich geworden sind. Passen Sie dies natürlich entsprechend an.