📜  Bash 脚本——如何逐行读取文件

📅  最后修改于: 2022-05-13 01:57:34.233000             🧑  作者: Mango

Bash 脚本——如何逐行读取文件

在本文中,我们将了解如何在 Bash 脚本中逐行读取文件。

在某些情况下,您可能希望使用 BASH 脚本逐行读取文件的内容。在本节中,我们将研究不同的方法来做到这一点。我们将使用 BASH 命令和工具来实现该结果。我们使用 read 和 cat 命令、for 循环、while 循环等从文件中读取,并使用 BASH 中的几行脚本逐行遍历文件。

方法一:使用读命令和while循环

我们可以使用 read 命令逐行读取文件的内容。我们在 read 命令中使用 -r 参数来避免任何反斜杠转义字符。

#!usr/bin/env bash

file="temp.txt"

while read -r line; do
    echo -e "$line\n"
done <$file 

在下面的示例中,我们可以看到我们对文件逐行进行迭代,并将单行的内容存储在变量“ line ”中。文件名存储在变量文件中,可以根据需要自定义。您可以使用以下命令运行脚本(这里filereader.sh可以是您为脚本指定的任何名称)。

bash filereader.sh

我们使用带有-r参数的 read 命令来读取内容而不转义反斜杠字符。我们读取每一行的内容并将其存储在变量 line 和while 循环中,我们使用格式化的-e参数回显以使用特殊字符(如 \n )并打印 line 变量的内容。

该文件也可以通过将其解析为位置参数来输入。

bash filereader.sh filename

文件名可以是您想要读取其内容的任何文件。您需要更改声明文件变量的脚本。

file=$1

这会将脚本名称后的第一个参数作为要在脚本中使用的文件名。因此,我们可以使脚本根据给定的输入动态更改文件。

方法二:使用 cat 和 for 循环

通过这种方法,我们可以使用 cat 命令和 for 循环来读取文件的内容。我们对循环使用与 while 循环相同的方法,但我们使用 cat 命令将文件的内容存储在一个变量中。 for 循环逐行遍历cat 命令输出中的行,直到到达 EOF 或文件末尾。

在这里,我们也可以将位置参数合并为文件名。我们需要在脚本中用 $1 替换文件名。

file=$(cat $1)

这将从命令行参数获取文件并将其解析为 cat 命令以进一步处理脚本。

#!usr/bin/env bash

file=$(cat temp.txt)

for line in $file
do
    echo -e "$line\n"
done

因此,从上面的示例中,我们能够在 BASH 脚本中逐行读取文件的内容。