我想创建一个逗号分隔的数组列号我的输入文件存储为一个变量。
例如,如果我的输入文件包含4列,将1,2,3,4存储为变量comma_arr,然后我可以将comma_arr进一步作为变量传递。
我使用了这个代码:
clm=$(
awk -F"\t" '{print NF}' clm.tsv |
sort -nu |
tail -n 1) &&
arr=($(seq 1 $((clm)))) &&
IFS=',' comma_arr="${arr[*]}" &&
echo "${comma_arr[*]}"
)
我也试过使用echo "${comma_arr[@]}"
,但不是得到1,2,3,4,而是在新的一行中得到这些数字,如下所示:
1
2
3
4
输入文件(clm.tsv)如下所示:
DA NE UNKNOWN BLA
YES NO NA,NA LOL
YES NO NA,NA LOL
YES NO NA,NA LOL
我已经尝试了很多不同的组合,它们都返回了新的行列表。我不确定下一步该尝试什么。如果有用的话,命令declare -p comma_arr
返回typeset comma_arr=$'1\n2\n3\n4'
。
5条答案
按热度按时间j7dteeu81#
只使用awk,并且只在输入文件的第一行使用。将输入字段分隔符设置为制表符,将输出字段分隔符设置为逗号,用索引替换所有字段,然后打印。
cwdobuhd2#
如果我的输入文件包含4列,则将1,2,3,4存储为变量comma_arr,然后我可以将comma_arr进一步作为变量传递。
vx6bjr1n3#
我会怎么做:
nlejzf6q4#
另一种可能性可能是:
0pizxfdo5#
你可以做的不仅仅是逗号
你可以让它有一个曲率
或者用魔法下楼梯