So etwas wie grep -oE '<[^>]+>'
:
$ echo "Job <472971> Job Name <aaaaaaaaaaa> User <bbbbbbbbb> Project <cccccc> Status <RUN> Queue <AL_Ptime>Interactive pseudo-terminal shell mode Submitted from host <lsf_login07> CWD </asdfghjklll/dsadasd/asda>" \
| grep -oE '<[^>]+>'
<472971>
<aaaaaaaaaaa>
<bbbbbbbbb>
<cccccc>
<RUN>
<AL_Ptime>
<lsf_login07>
</asdfghjklll/dsadasd/asda>
Wenn Sie die Zeilenumbrüche und Leerzeichen müssen loszuwerden zwischendurch, können Sie Rohr dies in einem einfachen awk wie folgt aus:
grep -oE '<[^>]+>' | awk '{printf "%s%s", (NR==1?"":" "), $0}'
oder mit tr:
grep -oE '<[^>]+>' | tr "\n" " "
EDIT: Angenommen OP eine Eingabedatei mit einer Anzahl dieser Linien verwendet, könnte man zu GNU drehen awk:
$ cat tst.awk
BEGIN { FPAT="<[^>]+>" }
{ for (i=1; i<=NF; i++) printf "%s%s", (i==1?"":" "), $i
printf "\n"
}
es zu benutzen:
awk -f tst.awk file
wo Datei ist:
$ cat file
Job <472971> Job Name <aaaaaaaaaaa> User <bbbbbbbbb> Project <cccccc> Status <RUN> Queue <AL_Ptime>Interactive pseudo-terminal shell mode Submitted from host <lsf_login07> CWD </asdfghjklll/dsadasd/asda>
Job <472971> Job Name <aaaaaaaaaaa> User <bbbbbbbbb> Project <cccccc> Status <RUN> Queue <AL_Ptime>Interactive pseudo-terminal shell mode Submitted from host <lsf_login07> CWD </asdfghjklll/dsadasd/asda>
oder als Einstrich:
$ awk 'BEGIN{FPAT="<[^>]+>"} \
{for (i=1; i<=NF; i++) printf "%s%s", (i==1?"":" "), $i; printf "\n"}' file
<472971> <aaaaaaaaaaa> <bbbbbbbbb> <cccccc> <RUN> <AL_Ptime> <lsf_login07> </asdfghjklll/dsadasd/asda>
<472971> <aaaaaaaaaaa> <bbbbbbbbb> <cccccc> <RUN> <AL_Ptime> <lsf_login07> </asdfghjklll/dsadasd/asda>
tks Marc es ist Arbeit. Aber ich habe ein anderes Problem Ich habe viele Zeilen, die in der Datei, die viele Jobs enthalten, so dass die Ausgabe wird auch viele Zeile haben, dort für die awk Befehl funktioniert nicht gut Ich frage mich, meine Ausgabe kann viele Zeilen wie mein Wunsch haben Ausgabe? – Lucil120
Lösung zu meiner Antwort hinzugefügt. –
Danke Marc Wenn ich diese awk Datei verwende, muss ich den Befehl grep verwenden? Denn wenn ich nur die awk-Datei verwende, sieht die Ausgabe einfach wie die Eingabedatei aus. Oder die Eingabedatei dieser awk-Datei ist die Ausgabedatei nach dem Befehl grep? Ich habe beide versucht, aber es funktioniert auch nicht – Lucil120