Suchen Sie nach Datensätzen, die eine Zeichenfolge enthalten, die mit bestimmten Zeichen beginnt und endet

Suchen Sie nach Datensätzen, die eine Zeichenfolge enthalten, die mit bestimmten Zeichen beginnt und endet

Ich brauche einen Befehl (vorzugsweise mit awk), der die eindeutigen Matrikelnummern und Namen aller Studenten auflistet, deren Name mit beginnt Aund mit endet, kaus der folgenden Liste:

001 Abhishek Physics 90
002 Rohan Maths 100
003 simashree Chemistry 89
002 Rohan Language 80
005 Vamsi Computers 99
001 Abhishek Maths 95
006 Surjya Computers 93 

Antwort1

Da Sie ausdrücklich nach einer Lösung mit gefragt haben awk, könnten Sie unter der Annahme, dass Matrikelnummer und Name das erste und zweite Feld sind, verwenden

awk '$2 ~ /^A[[:alpha:]]*k$/ {print $1,$2}' yourfile

Wenn Sie eindeutige Datensätze benötigen, ist es am einfachsten, die Ergebnisse durch den sort -uBefehl zu leiten

awk '$2 ~ /^[[:alpha:]]*k$/ {print $1,$2}' yourfile | sort -u


Richtiger wäre vielleicht,WortankeranstattLeinenanker^, $ im regulären Ausdruck, d. h.

awk '$2 ~ /\<[[:alpha:]]*k\>/ {print $1,$2}' ...

Beide scheinen in diesem Kontext zu funktionieren (möglicherweise, weil das Feld bereits durch Leerzeichen getrennt ist).

Antwort2

Vorausgesetzt, Sie haben diese Datensätze in einer Datei mit dem Namen data_file.txt, können Sie Folgendes verwenden:

grep "A[a-z]*k" data_file.txt

Wenn Sie die erste Zahlenspalte entfernen möchten, verwenden Sie:

grep "A[a-z]*k" test | cut -d" " -f 2-

Wenn Sie die letzte Zahlenspalte entfernen möchten, verwenden Sie:

grep "A[a-z]*k" test | cut -d" " -f -3

verwandte Informationen