📅  最后修改于: 2023-12-03 14:39:27.958000             🧑  作者: Mango
这篇文章将介绍如何使用shell脚本编写一个程序,该程序可以从一个文件中返回不在另一个文件中的行。我们将会使用Bash编程语言来完成这个任务。
假设我们有两个文件:file1.txt
和file2.txt
。我们希望找出file1.txt
中存在但file2.txt
中不存在的行。也就是说,我们要返回file1.txt
中的行,这些行在file2.txt
中没有出现过。
我们可以使用以下步骤来解决这个问题:
file1.txt
的每一行并存储在一个数组中。file2.txt
的每一行,检查该行是否在第一步中创建的数组中存在。下面是一个示例的Bash脚本来实现上述解决方案:
#!/bin/bash
file1="file1.txt"
file2="file2.txt"
# 读取file1.txt的每一行并存储在一个数组中
mapfile -t lines < "$file1"
# 读取file2.txt的每一行,检查是否在数组中存在
while IFS= read -r line || [ -n "$line" ]; do
if ! [[ "${lines[@]}" =~ "$line" ]]; then
echo "$line"
fi
done < "$file2"
在这个脚本中,我们使用mapfile
命令将file1.txt
的每一行存储在名为lines
的数组中。然后,我们使用while
循环读取file2.txt
的每一行,并使用"${lines[@]}"
判断该行是否在数组中存在。如果不在,则将其打印出来。
这个脚本可以在命令行中运行,如下所示:
$ bash script.sh
执行后,脚本将会返回不在file2.txt
中的行,并将其打印出来。
这篇文章向程序员介绍了如何使用Bash编写一个程序,该程序可以从一个文件中返回不在另一个文件中的行。我们通过使用mapfile
命令和循环来实现这个功能。希望这篇文章能对你有所帮助,以提高你在Shell-Bash编程中的技能。