gpt4 book ai didi

arrays - Bash 将文本文件格式化为列

转载 作者:行者123 更新时间:2023-12-04 00:41:30 25 4
gpt4 key购买 nike

我有一个包含数据的文本文件,它设置得像一个表格,但用逗号分隔,例如:

姓名、年龄、喜欢的颜色、地址

鲍勃,18 岁,蓝色,史密斯街 1 号

朱莉,17 岁,黄色,约翰街 4 号

首先,我尝试使用 for 循环,并将每个“列”及其所有值放入一个单独的数组中。

eg/'nameArray' 将包含 bob、julie。

这是我实际脚本中的代码,有 12 列,因此为什么 c 不应大于 12。

declare -A Array

for((c = 1; c <= 12; c++))
{
for((i = 1; i <= $total_lines; i++))
{
record=$(cat $FILE | awk -F "," 'NR=='$i'{print $'$c';exit}'| tr -d ,)
Array[$c,$i]=$record

}
}

然后我从这里使用“printf”函数来格式化每个数组并将它们打印为列。这个问题是我有 3 个以上的数组,在我的实际代码中它们都在同一个 'printf' 行中。我不喜欢这种做法,而且我知道这是一种愚蠢的做法。

for ((i = 1; i <= $total_lines; i++))
{
printf "%0s %-10s %-10s...etc \n" "${Array[1,$i]}" "${Array[2,$i]}" "${Array[3,$i]}" ...etc
}

但这确实给了我想要的输出,见下图:

enter image description here

我想弄清楚如何用另一种不需要大量打印语句的方式来做到这一点。另外,我第一次调用 for 循环时出现“awk”错误。

如有任何建议,我将不胜感激,我查看了多个主题和帖子,试图找到合适的解决方案,但没有找到有用的东西。

最佳答案

像这样尝试命令

列-t -s','

这是我可以快速得到的。有关详细信息,请参阅手册页。

关于arrays - Bash 将文本文件格式化为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30346472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com