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

维达哈

嗨,我必须将文件捕获到数组中,然后将该数组传递到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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将别名命令名称捕获到数组中。然后在 For 循环中执行每个

将值分配给数组以在 while 循环中使用

如何在while循环中使用嵌套数组?

如何爆炸两个数组并在每个循环中使用相同的数组

Bash将awk的输出捕获到数组中

在循环中使用时,使用getline将单词存储在char数组中不起作用?

使用awk将行拆分为数组,并在调用shell中使用该数组的值

将文本从 scp 捕获到变量或数组

将 ListObject 的特定行捕获到数组

将数组存储在javascript文件中并在另一个文件中使用

在 if 循环中使用数组作为条件

如何在循环中打破索引数组并在PHP中使用

PHP,正确拆分多维数组并在循环中使用它

将循环内容捕获到变量中

如何使用子文件夹中的文件名填充要在嵌套循环中使用的数组?

在数组中使用Rest Operator进行结构分解:将数组元素用作变量,并在JavaScript中捕获剩余数组

如何在 for 循环中创建数组并在 forloop 之外访问该数组

将终端文本捕获到文件中

while循环中的Java数组

while循环中的数组匹配

Javascript:在循环时将值添加到数组中,然后该值也将包含在循环中

如何在C++中使用for循环将数组放入文件中

除非我将数组声明为具有相同内容的新数组,否则该数组会在while循环中自行更改

使用PHP将查询结果存储在数组中并在Javascript中使用数组

如何获取数组中元素的位置并在循环中省略该元素?

在bash中使用数组在每个循环中更改已创建文件夹的名称

jqueryUI滑块-在循环中使用.map和.get()将所有滑块的值读入数组

在for循环中使用jQuery.each将数组映射到元素文本?

JS Regex:如何将重复模式捕获到不同的数组元素中?