2017-12-24 7 views
0

Bisher habe ich grep für diese Art von Fragen verwendet, aber hier, ich denke, es kann nicht verwendet werden. In der Tat, ich möchte eine Übereinstimmung im ersten Abschnitt jeder Zeile, und drucken Sie dann die gesamte Zeile.Mit Bash, wie die ganzen Zeilen einer TXT-Datei gedruckt werden, die in ihrem ersten Abschnitt eine bestimmte Zeichenfolge enthalten?

schrieb ich etwas wie folgt aus:

cat file.txt | cut -d " " -f1 | grep root

Aber natürlich ist dieser Befehl die ganze Zeile nicht gedruckt wird, sondern nur den ersten Abschnitt von jeder Zeile, die „root“ enthält. Ich habe von awk Befehl gehört, aber selbst mit dem Handbuch verstehe ich nicht, wie ich mein Ziel erreichen kann.

Vielen Dank im Voraus für Ihre Antwort

Antwort

2

Einfache awk sollte es tun:

awk '$1 ~ /root/' file.txt 
+0

Ok, also der '1' $ bezieht sich auf den ersten Teil der Linie, aber was ist der Zweck der "~"? – Ludovic

+0

Es vergleicht das erste Feld '$ 1' mit der gegebenen Regex'/root/'. Aus dem Handbuch: ''~' und '! ~' Führen Sie Vergleiche mit regulären Ausdrücken durch '- siehe [Handbuch] (https://www.gnu.org/software/gawk/manual/gawk.html#Regexp-Usage) für mehr Informationen. – PesaThe

+0

Okay, vielen Dank für deine schnelle Antwort, ich habe viel zu viel Zeit damit verbracht, das herauszufinden :) – Ludovic

Verwandte Themen