使用awk过滤掉Shell中[..]内的子串列

时间:2015-11-19 09:54:25

标签: linux bash shell unix awk

我试图使用awk过滤掉特定IO中[..]中的特定部分。但是,我没有得到理想的输出。

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 个答案:

答案 0 :(得分:1)

试试这个:

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

这将输出六个以制表符分隔的列,其中包含您输入中的所需信息。 要合并上述输出中的两个或多个列,请将,替换为" "。这将用一个空格替换选项卡(当然,您可以使用任何所需的字符串:","":",...),例如。

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