Mehrere sed-Befehle verwenden

Hallo, ich möchte eine Datei durchsuchen und die Werte einer Zeile ausgeben, die mit dem folgenden regulären Ausdruck übereinstimmt, wobei der übereinstimmende Text entfernt wird. Die Ausgabe in eine Datei ist nicht erforderlich. Dies ist, was ich derzeit verwende und es gibt den erforderlichen Text aber mehrmals aus:

#!/bin/sh

for file in *; do
sed -e 's/^owner //g;p;!d ; s/^admin //g;p;!d ; s/^loc //g;p;!d ; s/^ser //g;p;!d' $file
done

Das bevorzugte Format wäre ungefähr so, damit ich die Kontrolle darüber haben kann, was dazwischen passiert:

for file in *; do
    sed 's/^owner //g;p' $file | head -1
    sed 's/^admin //g;p' $file | head -1
    sed '/^loc //g;p' $file | head -1
    sed '/^ser //g;p' $file | head -1
done

Eine Beispieleingabedatei wäre die folgende:

owner sys group
admin guy
loc Q-30934
ser 18r9723
comment noisy fan is something

und die erforderliche Ausgabe ist die folgende:

sys group
guy
Q-30934
18r9723

Antworten auf die Frage(3)

Ihre Antwort auf die Frage