我有很多文件要搜索每个文件中的特定字符串。 我使用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
请帮我改进我的代码。
答案 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!