awk以表格方式查找字符串和输出

时间:2016-02-02 12:15:14

标签: awk

我有很多文件要搜索每个文件中的特定字符串。 我使用awk查找字符串并以表格方式输出 我试过这段代码。

awk '$2 ~ /Sting1/ {print $1, $3} $1 ~ /String2/  {print $2}' *.log  

输出:

String1a String1-2a

String2a

String1b String1-2b

String2b

期望的输出:

String1a String1-2a String2a

String1b String1-2b String2b

请帮我改进我的代码。

3 个答案:

答案 0 :(得分:1)

如果您在打印$1$3后不想要换行,则可以使用printf代替print

awk '$2 ~ /String1/ {printf "%s %s ", $1, $3} $1 ~ /String2/  {print $2}' *.log

答案 1 :(得分:0)

您还可以使用ORS变量将输出记录分隔符设置为

$ awk  '$2 ~ /String1/{ORS=""; print $1, $3} $1 ~ /String2/{ORS="\n"; print $2}' input
ng1a String1-2aString2a
String1b String1-2bString2b

答案 2 :(得分:0)

如果我理解正确,那么这个awk one liner将按照你的意愿行事!!

awk -v ORS="\n\n" 'NR%4{printf "%s ",$0;next}1' *.log

输出:

$ awk -v ORS="\n\n" 'NR%4{printf "%s ",$0;next}1' file
String1a String1-2a  String2a

String1b String1-2b  String2b

如果行之间没有空格,则必须更改NR%2的NR%4!