繁体   English   中英

将 File 中的每个作为参数传递给 shell 中的不同 Array

[英]Pass each from File as as an argument to different Array in shell

我想将文件的每一行或每一列作为参数传递给不同的数组。

The file name is Entry.txt

Pool Library Name
Backup lib1  Deepak
Clone  lib2  Raju
Tape   lib3  Guru

Code is :

read -r -a array < Entry.txt

pool=("${array[0]}")
library=("${array[1]}")
Name=("${array[2]}")

现在,问题是我只在池数组中获取输入,但没有在其他数组中获取任何值。

我需要的是像这样的数组:

pool=(Backup Clone Tape)
Library=(lib1 lib2 lib3)
Name=(Deepak Raju Guru)

请帮忙。

read -a (没有自定义-d )读取一行中的单词。 但是,您想要读取条目,即列中的行,因此使用mapfile 将每一列读入其自己的数组

  • 提取每一列
  • 删除标题
  • 将每列(无标题)读入数组

前两点可以在一个awk one-liner中完成。

mapfile -t pool    < <(awk 'NR > 1 {print $1}' yourFile)
mapfile -t library < <(awk 'NR > 1 {print $2}' yourFile)
mapfile -t name    < <(awk 'NR > 1 {print $3}' yourFile)

或者在一个循环中

column=1
for arrayname in pool library name; do
     mapfile -t "$arrayname" < <(awk "NR > 1 {print \$$column}" yourFile)
     ((column++))
done

您可以 在线测试此解决方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM