如何使用awk命令从.gz文件格式提取输出数据

问题描述:

我有一个File.gz格式的文件,其内容如下所示。如何使用awk命令从.gz文件格式提取输出数据

'0' 0 0 0 0 0 'Allowed' 'Allowed' '0' 0 '' 'E1' 3 '1' '' '000000' '00000000' '0' '0' '150' '0' '323560' '600' '1' '0' '0' '0' 150809303 'LC9' 1 1506147442 150613878 4 0 0 0 '' 

如何使用awk命令从.gz文件格式中提取输出数据?就像我想输出的文件内容只适用于字段7,8,11,12,22,27以excel csv格式,其中字段7 =允许且字段12 = E1。

如何执行awk并在linux中输出输出结果?

+0

你能解压缩文件并调用'AWK '{打印$ 7 $ $ 8 $ 11 $ 12 $ 22 27日}' extracted_file'? –

+0

我无法gzip该文件。我希望显示字段7,8,11,12,22,27基于只有字段7 =允许和字段= 12的条件。如果字段7不等于允许和提交= 12,我不想显示它。 – snowman0805

awk '{OFS=","}{print $7,$8,$11,$12,$22,$27}' filename 

输出:

'Allowed','Allowed','','E1','323560','0' 

我希望你正在寻找一个班轮代码。

尝试以下,

gzip -dc File.gz|awk '{if ($7 == "allowed" && $12 == "E1") print $7","$8","$11","$12","$22","$27}' 

解释 - gzip -dc

**d**选项将该文件解压缩到标准输出

**c**选项写入输出;保留原始文件 不变。

+0

嗨,它能够显示您的命令输出基地。但我想显示的基础上只有字段7 =允许和字段= 12的条件。如果字段7不等于允许和提交= 12,我不想显示它。还有如何将它输出到Excel中的格式或TXT格式? – snowman0805

+0

您可以使用awk中的条件如下 'echo $(gzip -dc File.gz)| awk'{if($ 7 ==“allowed”&& $ 12 ==“E1”)print $ 7“,”$ 8“, “$ 11”,“$ 12”,“$ 22”,“$ 27}” –

+0

我有多条记录?好像只是显示记录的第一行而已?输入将是另一行记录。 '0'0 0 0 0 0'允许''允许''0'0'''E2'3'1''''000000''00000000''0''0''150''0''323560' '600''1''0''0''0'150809303'LC9'1 1506147442 150613878 4 0 0 0'' – snowman0805

awk无法读取gz文件。但是你可以做

zcat file.gz | awk -v OFS=, '{print $7, $8 ... etc}' 

为引用值测试,可以

... | awk -v OFS=, -v v7="'Allowed'" -v v12="'E1'" '$7==v7 && $12==v12 {print $7, ... etc}'