So verwenden Sie die Befehle „Cut“ und „Grep“, um durch „:“ getrennte Daten zu finden

So verwenden Sie die Befehle „Cut“ und „Grep“, um durch „:“ getrennte Daten zu finden

In meiner einfachen Datenbank enthält es beispielsweise Texte wie „Soldaten“.

Name:Rank:Gender:Age:Years of Service

Tom Corporal:Recruit:Male:19:2
Nicole Sergeant:Corporal:Female:30:10
Daniel Recruit:Sergeant:Male:40:19

Und mein Skript geht so:

echo "Enter name: "
read name

echo "Enter rank: "
read rank

echo "Enter gender: "
read gender

echo "Enter age: "
read age

echo "Enter Years of service: "
read years

grep $name database.txt

Wenn ich "Corporal" in den Namen eingebe, wird die Ausgabe angezeigt

Tom Corporal:Recruit:Male:19:2
Nicole Sergeant:Corporal:Female:30:10

weil die Zeichenfolge mit dem Abschnittsnamen und dem Rang übereinstimmt. Wie verwende ich das Trennzeichen:, um die Suche zu kategorisieren, sodass, wenn ich meine Bedingungen unter Rang eingebe, nur nach der Rangkategorie und nicht nach allem anderen gesucht wird.

Dank im Voraus.

Und stimmen Sie für meine Frage, anstatt sie herunterzustimmen.

Antwort1

grep "^.*:.*:$gender" Information.txt | awk -F: '{print $1}'

verwandte Informationen