将列打印到多行awk
我在这个问题上坚持了很长时间。我有一个输入文件,其中有很多行是这样的将列打印到多行awk,awk,split,row,csh,Awk,Split,Row,Csh,我在这个问题上坚持了很长时间。我有一个输入文件,其中有很多行是这样的 <594711> <name> <duyduy> <SV> <RUN> <AL_Ptime> </common/sAS> <lsf_login07> </shsv/DASA> <594712> <name> <thanhthanh> <SV> <RUN> <
<594711>
<name>
<duyduy>
<SV>
<RUN>
<AL_Ptime>
</common/sAS>
<lsf_login07>
</shsv/DASA>
<594712>
<name>
<thanhthanh>
<SV>
<RUN>
<AL_Ptime>
</common/NDWQ>
<lsf_login07>
</shsv/CXZC>
我的愿望是这样划船。它在作业ID之后重复
<594711> <RUN> <AL_Ptime> <lsf_login07> </shsv/DASA>
<594712> <RUN> <AL_Ptime> <lsf_login07> </shsv/CXZC>
遵循
awk
代码可能会在同样的方面帮助您
awk '
/<\/shsv\/[a-zA-Z]+>/{
val=val?val OFS $0:$0;
print val;
flag="";
next
}
/<[0-9]+>/{
flag=1;
val=$0;
next
}
val && (($0 ~ /<RUN>/) || ($0 ~ /<AL_Ptime>/) || ($0 ~ /<lsf_login07>/)){
val=val?val OFS $0:$0
}
' Input_file
awk'
//{
val=val?val OFS$0:$0;
打印val;
flag=“”;
下一个
}
//{
flag=1;
val=$0;
下一个
}
val&($0~/)| |($0~/)| | |($0~/)){
val=val?val OFS$0:$0
}
'输入文件
输出如下
<594711> <RUN> <AL_Ptime> <lsf_login07> </shsv/DASA>
<594712> <RUN> <AL_Ptime> <lsf_login07> </shsv/CXZC>
编辑:也在此处添加代码解释
awk '
/<\/shsv\/[a-zA-Z]+>/{ ##Search for string shsv with alphabets till their group in a line, then do following.
val=val?val OFS $0:$0; ##create variable named val whose value is current line when val is NULL else it will concatenating its own value with each line.
print val; ##printing variable val here.
flag=""; ##making variable flag as NULL here.
next ##Using next will skip all statements further.
}
/<[0-9]+>/{ ##Search <digits till group and if it is TRUE then do following.
flag=1; ##Setting variable flag to 1 now.
val=$0; ##making variable val as current line.
next ##Using next will skip all statements further.
}
val && (($0 ~ /<RUN>/) || ($0 ~ /<AL_Ptime>/) || ($0 ~ /<lsf_login07>/)){ ##Checking if variable val is NOT NULL AND (either current line is string <RUN> OR <AL_Ptime> OR <lsf_login07>) then do following.
val=val?val OFS $0:$0 ##create variable named val whose value is value of current line if va; is NULL else it will concatenate its own value with current line.
}
' Input_file ##Mentioning the Input_file name here.
awk'
//{###用字母搜索字符串shsv,直到它们的组排成一行,然后执行以下操作。
val=val?val OFS$0:$0;##创建名为val的变量,当val为空时,该变量的值为当前行,否则它会将自己的值与每行连接起来。
打印val;##在此处打印变量val。
flag=“”;##在此处将变量标志设置为NULL。
next##使用next将进一步跳过所有语句。
}
//{###搜索请显示您的代码。我甚至不知道要获取它的命令我从代码grep-oE']+>'文件中获得了输入。我考虑使用Paste-s,但它似乎不起作用。为什么lsf_login07
出现在第二行,它不出现在第二组
中?欢迎使用堆栈溢出!您似乎在问为您编写一些代码。Stack Overflow是一个问答网站,不是一个代码编写服务。请学习如何编写有效的问题。@Lucil120,np,现在检查我的解决方案。请不要在评论中发布您的尝试,在您的帖子中发布,以便所有人都能看到。享受学习吧!!您能解释一下吗在我的行val=val?val of s$0:$0中,输入可能在@Lucil120处更改,我现在也添加了相同的解释。如果您有任何疑问,请告诉我。