arrays - 将列解析为单独的数组
问题描述
我有一个空格分隔的文件:
Pool Library Name Email Subject
Finland lib1 Guru guru@abc.com,Narendra@abc.com Finland Media Rotation
Tucson lib2 Albert abc@def.com Tucson Media Rotation
Vancouver lib3 Jeff ghi@abc.com Vancouver Media Rotation
我想将列解析为数组,例如:
declare -a Pool=(Finland Tucson Vancouver)
declare -a Library=(lib1 lib2 lib3)
declare -a Name=(Guru Albert Jeff)
declare -a Email=("guru@abc.com,Narendra@abc.com" abc@def.com ghi@abc.com)
我的代码是:
column=1
for arrayname in Pool Library; do
mapfile -t "$arrayname" < <(awk "NR > 1 {print \$$column}" file.txt)
((column++))
done
但是如果有多个项目,例如 in ,它就会失败Email
。
解决方案
请您尝试以下操作。
awk -v s1="\"" '
FNR==1{
for(i=1;i<=NF;i++){
header[i]=$i
}
val=length(header)
next
}
{
match($0,/.*\.com +/)
string=substr($0,RSTART,RLENGTH)
num=split(string,array," ")
for(i=1;i<=num;i++){
values[i]=(values[i]?values[i] OFS:"")s1 array[i] s1
}
values[num+1]=(values[num+1]?values[num+1] OFS:"")substr($0,RSTART+RLENGTH)
delete array
}
END{
for(i=1;i<=val;i++){
print "declare -a " header[i] "=(" values[i]")"
}
}
' Input_file
这将在终端上打印数组创建命令,您可以根据需要使用。
推荐阅读
- javascript - 如何设置默认日期
- sylius - Sylius\Component\Core\Model\Product::getMainTaxon() 返回 Taxoninterface 的代理
- javascript - 如何将 cognito 托管的 UI 集成到 React 应用程序中?
- javascript - 每个角度组件的范围类名称和脚本
- c# - Tshark 将输出重定向到 C# 控制台程序或文件
- flutter - CupertinoPicker textStyle flutter
- python - 熊猫从具有值的列中选择并获取列名
- batch-file - 如何将 10 个 excel 文件移动到由批处理文件创建的 10 个不同文件夹中
- uwp - Windows iot core 发送数据到远程服务器 52.139.250.253 费用网络
- javascript - 如何从谷歌表格中获取数据作为字典数组