awk - awk/gawk 数组连接成字符串失败
问题描述
我想在 gawk 中将一个数组连接成一个字符串,
让数组a [ABC, DEF, GHI]
并想要一个像“ABC DEF GHI”这样的字符串
在这里,为了演示目的,我使用“echo”简化了管道馈送:
测试...工作正常(没有连接,只有输出)
@(回声 ABC & 回声 DEF & 回声 GHI) | gawk '{a[$0]++} END { for( f in a ) print f; }'
现在尝试连接
@(回声 ABC & 回声 DEF & 回声 GHI) | gawk '{a[$0]++} END { for( f in a ) b=(bf); 打印 b; }'
只返回数组'a'中的第一个字符串......
关于如何做到这一点的任何想法......
解决方案
如果您尝试打印 Unix shell 数组的连接值,例如由以下人员创建:
$ a=(ABC DEF GHI)
然后做:
$ echo "${a[*]}"
ABC DEF GHI
如果您想连接多个输入行,如下所示:
$ printf '%s\n' "${a[@]}"
ABC
DEF
GHI
由于某种原因,使用 awk 有几个选项,包括:
$ printf '%s\n' "${a[@]}" | awk '{printf "%s%s", (NR>1 ? OFS : ""), $0} END{print ""}'
ABC DEF GHI
$ printf '%s\n' "${a[@]}" | awk '{b=(NR>1 ? b OFS : "") $0} END{print b}'
ABC DEF GHI
$ printf '%s\n' "${a[@]}" | awk '{a[NR]=$0} END{for (i=1; i<=NR; i++) b=(i>1 ? b OFS : "") a[i]; print b}'
ABC DEF GHI
$ printf '%s\n' "${a[@]}" | awk '{a[NR]=$0} END{for (i=1; i<=NR; i++) printf "%s%s", (i>1 ? OFS : ""), a[i]; print ""}'
ABC DEF GHI
如果这些都不是您想要做的,那么请编辑您的问题以阐明您的要求。
推荐阅读
- javascript - 正确拆分文本区域值 jQuery 正则表达式
- c++ - Substraction string on string and multiply by int role
- lua - 如何检查嵌套在lua表中的布尔值
- laravel-5 - 如何检查是否为每一行选中了复选框
- docker - Gitlab 使用 Docker 测试:'您已成功注册。但是,我们无法让您登录,因为您的帐户正在等待批准……”
- arrays - 为什么 gcc-10 在二维数组 openacc 应用程序中无法链接错误“错误:数组部分在 'map' 子句中不连续”?
- excel - 国名不同年份的数据如何合并?
- c++ - 为什么我的子类按钮程序会弄乱我的程序?
- labview - 如何在LabVIEW中将两个图像相加(绿屏系统)
- android - 如何检测 AutoCompleteTextView 弹出方向