将列解析为单独的数组



我有一个空格分隔的文件:

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

但是在多个项目的情况下它会失败,例如在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

这将在终端上打印数组创建命令,您可以根据需要使用

相关内容

  • 没有找到相关文章

最新更新