2015-11-19 67 views
0

我试图用awk从特定的IO中只过滤[..]中的特定部分。但是,我没有得到所需的输出。使用awk过滤掉Shell中[..]中的子字符串列表

Workflow: [wf_Mod1_INTERFACE_A] version [11]. Workflow run status: [Scheduled] Schedule time: [Mon Nov 16 16:00:00 2015] 
Workflow: [wf_exec1_INTERFACE_A] version [6]. Workflow run status: [Scheduled] Schedule time: [Mon Nov 16 15:00:00 2015] 

我要找使用awk的输出,这将在由制表符分隔3分单独的列返回:

wf_Mod1_INTERFACE_A Scheduled Mon Nov 16 16:00:00 2015 
wf_exec1_INTERFACE_A Scheduled Mon Nov 16 15:00:00 2015 

回答

1

试试这个:

awk -F"[][]" 'BEGIN{OFS="\t"}{print $2,$6, $8, $10, $14, $16}' inputFile 

这将头输出6个制表从您的输入中分离出需要的信息。 要在上述输出中组合两列或更多列,请将,替换为" "。这将用一个空白替换标签(当然,您可以使用任何您想要的字符串:",",":",...),例如,

awk -F"[][]" 'BEGIN{OFS="\t"}{print $2, $6" "$8, $10, $14" "$16}' inputFile 
+0

非常感谢您的帮助Knorr :) –