yum list installed | grep rpmforge | awk '{ print $1 }'
日志文件的格式如上。我想只打印JavaClass名称和消息日志。例如,从上面的文字,我需要提取下面的数据。
07:46:24,059 DEBUG [com.ibm.cmps.portal.web.account.tree.RelationshipRetriever] (http-nykdsr9622/10.54.65.111:4150-3) Fund count: 14
07:46:28,378 DEBUG [com.ibm.cmps.extgrid.grid.StaticHtmlControl] (http-nykcsr5422/10.54.65.111:4150-3) rowCount:75 - displayThreshold:75
07:46:28,384 INFO [com.ibm.cmps.extgrid.xml.TreeGridV6XmlGenerator] (http-nykdsr9622/10.54.65.111:4150-3) Finished layout rendering in 9 ms
我希望打印我正在使用awk命令来获取它。以下是由awk分隔的单词..
[com.ibm.cmps.portal.web.account.tree.RelationshipRetriever] Fund count: 14
[com.ibm.cmps.extgrid.grid.StaticHtmlControl] rowCount:75 - displayThreshold:75
[com.ibm.cmps.extgrid.xml.TreeGridV6XmlGenerator] Finished layout rendering in 9 ms
由于$ 4之后的单词数量不固定,我希望在$ 5之后打印$ 3和所有单词
我尝试使用以下命令 -
$1=07:46:24,059
$2=DEBUG
$3=[com.ibm.cmps.portal.web.account.tree.RelationshipRetriever]
$4=(http-nykdsr9622/10.54.65.111:4150-3)
$5,$6,.. remaining Log message
我想在4美元之后接受所有的话。
awk是否允许这样做?
我也很感激使用任何其他命令。
答案 0 :(得分:5)
您可以使用cut
:
cut -d' ' -f3,5- jboss.log
它打印字段3和从5开始直到结束的字段,而字段由空格分隔。
使用awk它有点冗长,并且在多行版本中得到了最好的解释:
script.awk
# on every line
{
# print field 3
printf "%s", $3
# iterate from 5 to number of fields ...
for(i=5;i<=NF;i++)
# ... and print them
printf " %s", $i
# print newline at the end
printf "\n"
}
这样称呼:
awk -f script.awk jboss.log
答案 1 :(得分:1)
将打印除第一列以外的所有列:
awk '{$1=""; print $0}' somefile
将打印除第一列以外的所有列:
awk '{$1=$2=""; print $0}' somefile
答案来自here