linux - 如何使用 IF/Then Bash 命令比较 2 个文件中的行数

标签 linux bash unix if-statement wc

我想比较两个单独文件的行数。虽然我尝试使用 wc -l相比之下,我很难让它正常工作。

我有:

if [ "$(wc -l file1.txt)" == "$(wc -l file2.txt)" ]; then echo "Warning: No Match!"; fi

但是,if/then 语句不会返回正确的输出。

如果文件 1 和文件 2 的行数相同,那么编写此代码的正确方法是什么?

文件1.txt:

example1
example2
example3

文件2.txt:

example4
example5
example6

更新:我们发现 wc -l命令必须返回一个数字仅用于比较。与问题 Why should there be a space after '[' and before ']' in Bash? 不同,这道题需要使用wc -l获取一个整数,可以比较不同文件中的行数。

最佳答案

您可以尝试关注并告诉我这是否对您有帮助。

if [ "$(wc -l < file1.txt)" -eq "$(wc -l < file2.txt)" ]; then echo 'Match!'; else echo 'Warning: No Match!'; fi

以上代码示例: 假设我们有以下输入文件:

cat file1.txt
I
am
Cookie

cat file2.txt

I
am
Cookie

现在,由于我们可以看到两个文件中的行数不相等,因此将出现以下结果。

if [ "$(wc -l < file1.txt)" -eq "$(wc -l < file2.txt)" ]; then echo 'Match!'; else echo 'Warning: No Match!'; fi
Warning: No Match!

现在,如果我们使文件的两行现在相等,如下所示。

cat file1.txt
I
am
Cookie
cat file2.txt
I
am
Cookie

现在,当我们运行相同的代码时,它将给出如下结果。

if [ "$(wc -l < file1.txt)" -eq "$(wc -l < file2.txt)" ]; then echo 'Match!'; else echo 'Warning: No Match!'; fi
Match!

关于linux - 如何使用 IF/Then Bash 命令比较 2 个文件中的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46678680/

相关文章:

linux - 什么是基于 Debian 的发行版?

multithreading - Ubuntu 终端 - 使用 gnu parallel 读取文件夹中所有文件中的行

bash - 在 bash shell 脚本中从 glob 目录内的命令行执行命令

c - 直接写入不同进程的stdout

linux - GNUplot 在日期绘制时抛出错误

linux - 交换文件中的列并删除重复项

linux - 在另一个(已经运行)完成后启动脚本

java - 使用 java.lang.Process 和特定用户从 Java 类执行 unix 程序

linux - setjmp 和 longjmp - 通过示例理解

在 gdb 中查找环境变量地址时的奇怪事情