shell - 当某些字段为空时,使用 AWK 列出数据库查询列表中的几列?

标签 shell awk

我正在尝试使用 awk 有选择地显示数据库表中的几列(请参见下面的示例)。虽然并非所有字段都已填充,但我仍然需要返回一个空白字段来表示它。

--------- -------------------------- ------------ ------
000       0000000000198012           702          29
000       0000000000198013                        29
000                                  702          29
000       0000000000198015           702          03
055       0000000000000001           702          

这就是我正在使用的:

select * from db| awk '{print $1,$3,$4}'

但在有空白字段的行中,awk 会跳过这些字段并显示下一个填充字段的结果。如何准确显示结果?

-谢谢!

最佳答案

gawk有FIELDWIDTHS
http://www.gnu.org/software/gawk/manual/html_node/Constant-Size.html
用法:
command | awk -f foo.awk

foo.awk

NR==1 {
    for (i=1; i<=NF; i++) {
      FIELDWIDTHS = FIELDWIDTHS " " length($(i))+1
    }
}

NR>1 {
    print $1, $3, $4
}

关于shell - 当某些字段为空时,使用 AWK 列出数据库查询列表中的几列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11693665/

相关文章:

linux - 在 Ubuntu 18.04 中更改 root@<名称>

shell - KornShell (ksh) 中的测试命令

python - 从 xml 中提取值

linux - 如何从 Linux 中的文件向用户发送具有特定模板的邮件(模板包含文件中的信息)?

bash - AWK 不会在输出区域设置中过滤十进制形式的数字 100 (100.000)

bash - Shell脚本将矩形文本旋转45°

mysql - 如何通过linux shell脚本执行sql命令?

shell - 如何从删除第一行的文件中的列表中运行第一个进程,就好像该文件是一个队列并且我调用了 "pop"?

bash - sed/Awk/cut...如何决定使用哪个来解析 Docker 输出?

linux - 在 shell 脚本中复制一个变量 (Linux)