How To Compare Number Of Lines In 2 Files Using IF/Then Bash Command
本问题已经有最佳答案,请猛点这里访问。
我想比较两个单独文件的行数。当我尝试使用
我有:
1 | if ["$(wc -l file1.txt)" =="$(wc -l file2.txt)" ]; then echo"Warning: No Match!"; fi |
但是,if/then语句没有返回正确的输出。
如果文件1和文件2的行数相同,那么编写此代码的正确方法是什么?
文件1.txt:
1 2 3 | example1 example2 example3 |
号
文件2.txt:
1 2 3 | example4 example5 example6 |
更新:我们发现
你能试着跟我说一下吗?如果这对你有帮助的话,请告诉我。
1 | if ["$(wc -l < file1.txt)" -eq"$(wc -l < file2.txt)" ]; then echo 'Match!'; else echo 'Warning: No Match!'; fi |
上述代码示例:假设我们有以下输入文件:
1 2 3 4 5 6 7 8 9 10 | cat file1.txt I am Cookie cat file2.txt I am Cookie |
号
既然我们可以看到两个文件中的行数不相等,那么下面的结果就会出现。
1 2 | if ["$(wc -l < file1.txt)" -eq"$(wc -l < file2.txt)" ]; then echo 'Match!'; else echo 'Warning: No Match!'; fi Warning: No Match! |
现在,如果我们使两个文件的行相等,如下所示。
1 2 3 4 5 6 7 8 | cat file1.txt I am Cookie cat file2.txt I am Cookie |
。
现在,当我们运行相同的代码时,它将给出如下的结果。
1 2 | if ["$(wc -l < file1.txt)" -eq"$(wc -l < file2.txt)" ]; then echo 'Match!'; else echo 'Warning: No Match!'; fi Match! |
您需要在括号和比较表达式之间留出一个空格:
1 | if [ <expression> ]; then echo"Then Do Something"; fi |
。
因此,在您的情况下,它将是:
1 | if ["$(wc -l file1.txt)" -eq"$(wc -l file2.txt)" ]; then echo"Warning: No Match!"; fi |
。