gpt4 book ai didi

arrays - 将文件捕获到数组中并在 while 循环中使用该数组

转载 作者:太空宇宙 更新时间:2023-11-04 04:35:06 24 4
gpt4 key购买 nike

嗨,我必须将文件捕获到数组中,然后将该数组传递到 while 循环中。

我只是不想用下面的 while 循环执行我的脚本,因为它需要很长时间......

while read line; do

some actions...

done < file.txt

我的服务器有 8 GB 内存,其中 6 GB 始终可用。因此,请告诉我是否最好将 100 MB 大小的文件捕获到内存(数组)中并对其执行 grep、sed、awk 等操作。

如果是这样,请告诉我如何将文件捕获到数组中。

如果没有,请建议我另一种提高性能的方法。

最佳答案

不太明白……

你需要这样的东西吗?

array=()

# Read the file in parameter and fill the array named "array"
getArray() {
i=0
while read line
do
array[i]=$line
i=$(($i + 1))
done < $1
}

getArray "file.txt"
for line in "${array[@]}"
do
# some actions using $line
done
<小时/>

编辑:

为了回答你的问题,是的,可以将数据 grep 到一个数组中并将其插入另一个数组中。可能有更好的方法来做到这一点,但这可行:

array2=()

# Split the string in parameter and push the values into the array
pushIntoArray() {
i=0
for element in $1
do
array2[i]=$element
i=$(($i + 1))
done
}

array1=("foo" "bar" "baz")
# Build a string of the elements into the array separated by '\n' and redirect the ouput to grep.
str=`printf "%s\n" "${array1[@]}" | grep "a"`
pushIntoArray "$str"
printf "%s\n" "${array2[@]}" # Display array2 line by line

此片段的输出:

$ ./grep_array.sh
bar
baz

关于arrays - 将文件捕获到数组中并在 while 循环中使用该数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18338391/

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