我正在搜索如何在“打印”中放置 for 循环 - 我已经管理了如何从日志文件中获取我需要的所有信息,但是如果我在打印后使用“for 循环”,那么每个新信息都会在新行中给出。我知道每次都在调用 print 所以......如何在新行中打印所有内容?例如这个:
cat /var/log/apache2/domlogs/xxxx/xxxx.com* | awk -F " " '{print $1 " - " $4 " " $5 " "} {for(i=12; i<=NF; i++) print $i}'
给我那个输出:
66.249.65.172 - [29/May/2019:02:48:20 +0200]
"Mozilla/5.0
(compatible;
Googlebot/2.1;
+http://www.google.com/bot.html)"
但是当我想最后通过我在 12 col 和 NF 之间找到的内容时:
cat /var/log/apache2/domlogs/xxxx/xxxx.com* | awk -F " " '{print $1 " - " $4 " " $5 " " for(i=12; i<=NF; i++) " " $i}'
然后我只得到:
66.249.65.172 - [29/May/2019:02:48:20 +0200]
我要输出如下:
66.249.65.172 - [29/May/2019:02:48:20 +0200] "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
您需要使用
printf()
over,print
因为后者默认情况下会在提供的字符串之后嵌入换行符。修改您的代码以使用printf
每个字符串的格式说明符。