Arrays 从bash中的文件中读取成对数组
我有一个bash脚本,它将bash数组分成对,并在任意一个元素上进行匹配Arrays 从bash中的文件中读取成对数组,arrays,bash,Arrays,Bash,我有一个bash脚本,它将bash数组分成对,并在任意一个元素上进行匹配 declare-a arr=( “苹果”“水果” “卷心菜”“蔬菜” ) 对于((i=0;i我认为,如果您相信您的输入,您可以: IFS=' \n' eval props=($(<stuff.log)) 无论如何,我想我会犹豫在生产代码中使用这种方法。最好编写一个适当的完全解析器,将“考虑在内,并逐字符读取输入字符 如果要将文件读入数组,请使用mapfile或readarray命令(它们是完全相同的命令).我会看一
declare-a arr=(
“苹果”“水果”
“卷心菜”“蔬菜”
)
对于((i=0;i我认为,如果您相信您的输入,您可以:
IFS=' \n' eval props=($(<stuff.log))
无论如何,我想我会犹豫在生产代码中使用这种方法。最好编写一个适当的完全解析器,将“
考虑在内,并逐字符读取输入字符
如果要将文件读入数组,请使用mapfile
或readarray
命令(它们是完全相同的命令).我会看一看,谢谢!这对提高我自己很有帮助。谢谢。在你进入bash
的文本操作之前,我建议你先阅读一些基本的awk
来处理你未来的问题。谢谢你的回答。我想我不明白该怎么做。对不起,我对bash真的很陌生。你能如果你不介意的话,给我一个工作示例?哦,我明白了。似乎我可以用echo“${props[I+2]}”
选择任何我想要的元素,但是这是按顺序进行的,例如,对于50
项,我必须使用echo“${props[I+50]}“
,对吗?因为我在数组文件中大约有120行,每行有3列,所以使用起来方便吗?我在想一些事情,比如用3个增量读取每行,然后用${props[I]}
,${props[I+1]}
和${props[I+2]}选择每行的每个元素。”
因此,我只能使用i0、1和2
而不是像使用I+120
那样用于第120行的第一项。有许多在线页面解释bash中的数组是如何工作的。要访问props
数组中的第50个元素,请使用${props[49]
。如果I
是整数值,例如I=5
,则${props[i+1]}
首先将i+1
展开为5+1
,调用epxr
计算它(结果=6),然后调用${props[6]}
扩展后。我有120行…3列
-然后相应地选择抽象。Bash没有2D数组。我不建议在Bash数组中存储任何内容,因为它们很慢,请使用标准unix工具执行所需的所有解析(comm
,join
awk
sed
cut
等)是的,也许我应该用一下。谢谢。
IFS=' \n' eval props=($(<stuff.log))
IFS=' \n' props=($(<stuff.log))
IFS='\n' props=($(printf "%s\n" "${props[@]}" | sed 's/^"//;s/"$//'))