我想比较两个单独文件的行数。虽然我尝试使用 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/