【问题标题】:how to use awk command to extract the output data from .gz file format如何使用 awk 命令从 .gz 文件格式中提取输出数据
【发布时间】:2017-10-17 06:00:39
【问题描述】:

我有一个格式为 File.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 文件格式中提取输出数据?就像我只想以 excel csv 格式输出字段 7、8、11、12、22、27 的文件内容,其中字段 7 = 允许,字段 12 = E1。

如何在 linux 中执行 awk 并打印输出?

【问题讨论】:

  • 你能解压文件并拨打awk '{print $7 $8 $11 $12 $22 $27}' extracted_file吗?
  • 我无法压缩文件。我想根据只有字段 7 = 允许且字段 = 12 的条件显示字段 7、8、11、12、22、27。如果字段 7 不等于 allowed and filed =12 ,我不想显示它。

标签: linux csv awk gawk gzip


【解决方案1】:

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}'

【讨论】:

    【解决方案2】:
    awk '{OFS=","}{print $7,$8,$11,$12,$22,$27}' filename
    

    输出:

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

    【讨论】:

      【解决方案3】:

      我希望您正在寻找一个单行代码。

      试试下面,

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

      解释-gzip -dc

      **d** 选项解压文件

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

      【讨论】:

      • 嗨,它能够根据您的命令显示输出。但我想根据只有字段 7 = 允许且字段 = 12 的条件显示。如果字段 7 不等于 allowed and filed =12 ,我不想显示它。还有在linux下如何输出成excel格式或者txt格式?
      • 你可以在awk中使用if条件,如下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 '' 'E2' 3 '1' '' '000000' '00000000' '0' '0' '150' '0' '323560' '600' '1' '0' '0' '0' 150809303 'LC9' 1 1506147442 150613878 4 0 0 0 ''
      • 我想这会解决你的疑问。在没有 echo 的情况下尝试如下,gzip -dc File.gz|awk '{if ($7 == "allowed" && $12 == "E1") print $7","$8","$11","$12","$22","$27}' echo 将线性打印 File.gz gzip 输出中的所有行,因此被删除
      • 感谢您的回复。但是我对使用 '{if ($7 =="allowed" && $12 = = "E1") 用于带有双引号的字段。如果那些没有双引号的字段,0 0 0 0 0 '{if ($1 =="0" && $2 == "0"),它可以显示出来。如何用 " ' 双引号显示这些内容。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-28
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多