BASH读取txt文件并存储在数组中

亚伦·乌拉尔(Aaron Ullal)

我正在写我的第一个BASH脚本,我对c和c#有一定的经验,所以我认为程序的逻辑是正确的。只是语法太复杂了,因为显然有数十亿种方法可以编写相同的东西!

无论如何,这里是脚本:它只是检查参数(字符串)是否包含在某个文件中。如果是这样,它将文件的每一行存储在一个数组中,并将该数组的一项写入文件中。我确信必须有更简单的方法来实现这一目标,但我想对bash循环进行一些练习

    #!/bin/bash

NOME=$1
c=0


#IF NAME IS FOUND IN THE PHONEBOOK THANK STORE EACH LINE OF THE FILE INTO ARRAY
#ONCE THE ARRAY IS DONE GET THE INDEX OF MATCHING NAME AND RETURN ARRAY[INDEX+1]

if grep  "$NOME" /root/phonebook.txt ; then
        echo "CREATING ARRAY"
        while read line
        do
                myArray[$c]=$line # store line
                c=$(expr $c + 1) # increase counter by 1
        done < /root/phonebook.txt

else
        echo "Name not found"
fi

c=0
for i in myArray;
        do
              if   myArray[$i]="$NOME" ;  then
                 echo ${myArray[i+1]} >> /root/numbertocall.txt
              fi

done

此代码确实返回myArray的第二个项目(myArray[2]或文件的第二行)。为什么?

IFS=$'\n' a=($(cat phonebook.txt))
for i in $(seq ${#a[*]}); do
    [[ ${a[$i-1]} = $name ]] && echo "${a[$i]}"
done

在Bash 4IFS=$'\n' a=($(cat phonebook.txt))中可以替换为mapfile -t a < phonebook.txt

grep -A1在比赛之后打印一行。-x禁用像-F这样的正则表达式,但仅匹配完整的行。

grep -x "$name" -A1 phonebook.txt | tail -n1

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从txt文件读取数据并存储在数据框中

从文件中读取整数并存储在数组中

读取文件以删除空格并存储在数组中

读取文件文本并存储在数组2d中

逐行读取C并存储在数组中

C ++从txt文件中读取getline并存储到字符串数组中

如何读取一行中每个 int 的 .txt 文件并存储到数组?

递归获取jave文件并存储在数组列表中

从文件中读取数据并存储到结构数组中

Bash从文件读取并存储到MATLAB中的变量

读取文件内容并存储为数组

Java:从txt文件读取,并且每个单词仅在数组+排序中存储一次

C-从.txt文件读取并将字符存储在数组中

从数据库中读取数据并存储在数组列表对象中

按列从csv读取数据并存储在数组列表中

为什么会出现细分错误11(使用fget读取输入并存储在数组中)?

在python中读取复杂的JSON文件并存储在数据框中

在目录中列出文件并存储在数组中。该数组可以在循环外访问

从文件读取并存储在C中

linux bash脚本获取用户输入并存储在数组中

读取具有多个数据条目的文本文件并将其转换为对象并存储在数组中

在Shell脚本中使用空行空间拆分文件并存储在数组中

PHP-在数组中获取数组并存储/操作

读取文本文件中的值并存储到 Python 中的数组中

在提示中获取多个值并存储在数组中

读取数字文本文件,并存储在C ++中的整数数组中

从文件中读取数字并存储到二维数组中

以特定模式读取csv文件并存储在地图或2D数组中

如何从一个文本文件,并存储读取到Java中的数组