使用 Bash 将文件读入数组
本篇文章介绍了一些使用 Bash 从文件中读取行并将其加载到数组中的方法。
首先,我们将看到 readarray 方法。 之后,我们将研究一种更通用的将文件读入 Bash 数组的方法。
使用 readarray 方法使用 Bash 将文件读入数组
readarray 是 Bash 4.0 附带的函数。 此方法适用于所有高于 4.0 的 Bash 版本。
如果您想查看当前运行的 Bash 版本,可以使用以下命令:
echo ${Bash_VERSION}
如果你的 Bash 版本低于 4.0,你可以跳到下一个方法,因为 readarray 对你不起作用。
我们将为所有示例使用一个名为 numbers.txt 的文件,其中包含以下内容。
numbers.txt 文件:
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
读取此文件并将其内容保存到数组中的语法如下:
readarray -t Arr < numbers.txt
分解语法,我们有 readarray 作为命令的名称,-t 将删除换行符,Arr 是写入文件内容的数组的名称。 numbers.txt 是我们要读取的文件的名称。
请注意
,如果要读取的文件与您的脚本不在同一文件夹中,则应提供该文件的完整路径。
可以读取此数组的内容,如以下示例所示:
echo ${Arr[1]}
上面的代码将输出数组索引 1 中的行,这是文件的第二行。
输出是:
2 1
要打印出整个数组,请使用以下语法:
echo ${Arr[@]}
此输出将是:
1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1
使用 Bash 使用通用方法将文件读入数组
一般方法的语法如下:
IFS=$'\r\n' GLOBIGNORE='*' command eval 'ArrName=($(cat filename))'
读取此数组将具有与上一个示例中所示类似的语法:
echo ${ArrName[1]}
上面的 Bash 行将显示数组索引 1 中的内容。 但是,如果我们想显示整个数组的内容,我们可以使用:
echo ${ArrName[@]}
一般方法说明
一般语法中的 ArrName 是数组名,而 cat 后面的文件名是要读取的文件名。 我们将修改这两个变量以供我们自定义使用。
IFS
定义中断字符,在本例中为 \r 和 \n。 \r 是回车符,\n 是换行符。
在大多数现代系统中,您会看到 \n 被用作换行符。
GLOBIGNORE='*'
被设置为安全以避免文件名出现奇怪的边缘情况。 应该注意的是,由于使用了 GLOBIGNORE,此命令需要 Bash(并且可能不一定适用于其他 shell,例如 zsh 或 fish)。
另一个需要注意的要点是这个解决方案比 readarray 慢得多。 使用它的唯一原因是你的 Bash 版本早于 4.0 版。
相关文章
在 Bash 中从文件中删除行
发布时间:2023/05/31 浏览次数:168 分类:操作系统
-
在 Bash 脚本中,有几种方法可以从文件中删除一行。 本文将讨论从文件中删除不必要行的不同方法。使用 tail 删除文本文件的一行
在 Bash 中查找文件大小
发布时间:2023/05/31 浏览次数:105 分类:操作系统
-
在 Bash 脚本中,有几种方法可以找到文件的大小。 本文将展示如何通过 Bash 查找文件的大小。我们将在这里讨论三种不同的方法,您可以根据自己的需要选择最合适的一种。
在 Bash 中删除空行
发布时间:2023/05/31 浏览次数:111 分类:操作系统
-
使用文件时,您可能需要在显示文件之前从文件中删除空行。 在 Bash Script 中,有几种方法可以从文件中删除空行。在 Bash 中删除空行的文件
在 Bash 中递归查找文件
发布时间:2023/05/31 浏览次数:195 分类:操作系统
-
这篇文章是关于 Bash 中的 find 命令的。 本文将讨论在 Bash 中使用 find 命令查找特定类型文件的方法。在 Bash 中使用 find 命令递归查找文件 用于导航文件层次结构的命令行工具是 Linux 中的 find
在 Bash 中将文件读入变量
发布时间:2023/05/31 浏览次数:165 分类:操作系统
-
本文将展示我们如何在变量中获取文件。 此外,我们将看到必要的示例和适当的解释,以使主题更容易理解。要保存到变量中的文本文件
在 Bash 中检查文件是否为空
发布时间:2023/05/31 浏览次数:74 分类:操作系统
-
通常需要检查文件是否为空,幸运的是,有一些简单的方法可以在终端上使用 Bash 或什至使用 Bash 脚本来检查。在 Bash 中使用带有 -s 选项标志的测试命令来检查文件是否为空
在 Bash 中搜索文件名以指定字符串开头的文件
发布时间:2023/05/31 浏览次数:127 分类:操作系统
-
在本文中,我们将学习如何查找文件名以指定字符串开头的所有文件。在 Bash 中搜索文件名以指定字符串开头的文件。使用 grep 命令
使用 Bash 打开 HTML 文件
发布时间:2023/05/31 浏览次数:192 分类:操作系统
-
在本文中,我们将了解如何在 Mac 上使用 Bash 使用默认浏览器打开 HTML 文件。使用 Bash 打开 HTML 文件 要打开 .html 文件,首先,我们需要创建一个扩展名为 .html 的文件名。
Bash 覆盖 File
发布时间:2023/05/31 浏览次数:102 分类:操作系统
-
在这篇 bash 文章中,我们将学习如何在 Linux 中覆盖文件。 为此,我们将学习使用 Linux 操作系统在 bash 中覆盖文件的不同方法和 Linux 命令。