【问题标题】:How to get the empty values in data using awk command如何使用 awk 命令获取数据中的空值
【发布时间】:2018-11-28 18:32:35
【问题描述】:

我有 linux lvs 命令示例结果集。我正在尝试使用 AWK 命令重新排列字段。使用它我无法跳过数据中的空值。

LV    VG      Attr        LSize   Pool  Origin  Data%  Meta%  Move  Log
root  centos  -wi-ao----  45.62g        root                        Online
swap  centos  -wi-ao----                root                        Offline

我尝试了以下命令,

awk '{print $1, $2, $3, $4, $5, $6, $7, $8, $9, $10}' lvs.txt

但输出是

LV VG Attr LSize Pool Origin Data% Meta% Move Log
root centos -wi-ao---- 45.62g root Online
swap centos -wi-ao---- root   Offline

我的预期结果一定是,

LV   | VG     | Attr       | LSize  | Pool | Origin | Data% | Meta% | Move | Log
root | centos | -wi-ao---- | 45.62g |      | root   |       |       |      | Online
swap | centos | -wi-ao---- |        |      | root   |       |       |      | Offline

请帮我解决这个问题。 也欢迎任何其他可能的方式。提前致谢。

【问题讨论】:

    标签: awk sed


    【解决方案1】:

    解决方案,使用awk--separator 并使用awk -F(字段分隔符)和printf 格式化输出:

    lvs --separator ',' | awk -F ',' '{printf "%-15s| %-10s| %10s| %10s| %10s| %10s| %10s| %10s| %10s|%10s|  \n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10}'
    

    输出:

      LV           | VG        |       Attr|      LSize|       Pool|     Origin|      Data%|      Meta%|       Move|       Log|  
      logicalTest1 | testgroup | -wi-a-----|      1.00g|           |           |           |           |           |          |  
      logicalTest2 | testgroup | -wi-a-----|      1.00g|           |           |           |           |           |          |  
    

    说明

    安装了 lvm 并创建了几个 lvs 来测试。

    lvs 命令产生一个没有字段分隔符的输出,只是一堆空格。将输出重定向到文件后,我转到display the spaces:

     root@florida:~# cat test2 | tr " " "*"
    **Host*******Attr*******KMaj*LSize*OSize*Origin
    **florida****-wi-a-----**254*1.00g*************
    **florida****-wi-a-----**254*1.00g*************
    

    因为空格不是很好的分隔符,在阅读man lvs 之后,我发现它有几个打印输出的选项,其中一个是--separator 参数,它允许您为每一列使用个性化的分隔符,我'我们使用了 CSV 常用的“,”(逗号)。

    然后,寻找用于分隔 awk I've found 的选项以在其上使用字段分隔符,我已将其与此处解释的 print formatting 粘合在一起。

    我只需要搜索和阅读一点,但这个问题的所有答案都在互联网上。

    【讨论】:

    • 感谢米格尔·奥尔蒂斯。但我也需要保存空值的字段,有时某些字段可能在一行中有值,而在另一行中没有。
    猜你喜欢
    • 2013-06-28
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 2020-06-30
    相关资源
    最近更新 更多