如何使用 IF/Then Bash 命令比较两个文件中的行数
How To Compare Number Of Lines In 2 Files Using IF/Then Bash Command
我想比较两个单独文件的行数。虽然我尝试在比较中使用 wc -l
,但我很难让它正常工作。
我有:
if [ "$(wc -l file1.txt)" == "$(wc -l file2.txt)" ]; then echo "Warning: No Match!"; fi
但是,if/then 语句没有 return 正确的输出。
如果文件1和2的行数相同,那么这段代码的正确写法是什么?
File1.txt:
example1
example2
example3
File2.txt:
example4
example5
example6
更新:我们发现wc -l
命令必须return一个数字才可以比较。与题目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
以上代码示例:
假设我们有以下 Input_files:
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!
您的括号和比较表达式之间需要一个 space:
if [ <expression> ]; then echo "Then Do Something"; fi
所以你的情况是:
if [ "$(wc -l file1.txt)" -eq "$(wc -l file2.txt)" ]; then echo "Warning: No Match!"; fi
我想比较两个单独文件的行数。虽然我尝试在比较中使用 wc -l
,但我很难让它正常工作。
我有:
if [ "$(wc -l file1.txt)" == "$(wc -l file2.txt)" ]; then echo "Warning: No Match!"; fi
但是,if/then 语句没有 return 正确的输出。
如果文件1和2的行数相同,那么这段代码的正确写法是什么?
File1.txt:
example1
example2
example3
File2.txt:
example4
example5
example6
更新:我们发现wc -l
命令必须return一个数字才可以比较。与题目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
以上代码示例: 假设我们有以下 Input_files:
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!
您的括号和比较表达式之间需要一个 space:
if [ <expression> ]; then echo "Then Do Something"; fi
所以你的情况是:
if [ "$(wc -l file1.txt)" -eq "$(wc -l file2.txt)" ]; then echo "Warning: No Match!"; fi