Regex 使用grep仅打印整行中的图案

Regex 使用grep仅打印整行中的图案,regex,awk,grep,gawk,Regex,Awk,Grep,Gawk,据我所知,使用grep-o命令只打印模式。 我有这样一个文件: 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

据我所知,使用grep-o命令只打印模式。 我有这样一个文件:

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>
<472971> <aaaaaaaaaaa> <bbbbbbbbb> <cccccc> <RUN> <AL_Ptime> <lsf_login07> </asdfghjklll/dsadasd/asda>
grep -oE '<[^>]+>' |  awk '{printf "%s%s", (NR==1?"":" "), $0}'
作业作业名称用户项目状态队列交互伪终端外壳模式从主机CWD提交
我想打印出
中的所有图案,我的愿望输出如下所示:

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>
<472971> <aaaaaaaaaaa> <bbbbbbbbb> <cccccc> <RUN> <AL_Ptime> <lsf_login07> </asdfghjklll/dsadasd/asda>
grep -oE '<[^>]+>' |  awk '{printf "%s%s", (NR==1?"":" "), $0}'

我试了很多,但我能准确地打印出图案


谢谢你的帮助

类似于
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>
其中文件为:

$ 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>
$cat文件
作业作业名称用户项目状态队列交互伪终端外壳模式从主机CWD提交
作业作业名称用户项目状态队列交互伪终端外壳模式从主机CWD提交
或者,作为一个班轮:

$ 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>
$awk'开始{FPAT=“]+>”}\

{for(i=1;itks Marc这是工作。但我有另一个问题,我的文件中有许多行,其中包含许多作业,因此输出也会有许多行,因为awk命令不能很好地工作,我想知道我的输出可以有许多行像我的愿望输出一样?为我的答案添加了解决方案。谢谢Marc,如果我使用awk文件,我必须使用grep逗号吗nd?因为如果我只使用awk文件,输出看起来就像输入文件。或者该awk文件的输入文件是使用grep命令后的输出文件?我尝试了两种方法,但都不起作用。不,你不必使用grep。检查你是否安装了GNU awk。哦,不,我用我在que上的简单输入再试一次stion和你的代码工作得很好我只是不知道为什么它不能与我真正的输入一起工作。