如何用shell比较两个文件每一行的不同
时间: 2024-10-25 19:08:51 浏览: 18
利用Shell脚本循环读取文件中每一行的方法详解
5星 · 资源好评率100%
在Shell中,可以使用`comm`命令来比较两个文件的每一行。`comm`是一个标准工具,它会显示两个输入文件按行排序后的差异。下面是如何操作:
1. 首先打开终端并定位到包含你要比较的文件的目录。
2. 使用以下命令格式来比较文件 `file1.txt` 和 `file2.txt`:
```
comm -23 file1.txt file2.txt > diff.txt
```
参数解释:
- `-23` 是 `comm` 的选项,表示只输出两个文件中共有的第二部分(即两文件都存在的行)。`-2` 表示仅从第一个文件(这里是 `file1.txt`)中选取行,`-3` 表示仅从第二个文件(这里是 `file2.txt`)中选取行。
3. 这将创建一个新的文件 `diff.txt`,其中包含了两个文件中不同的行。如果你想查看新增加的行(即只存在于 `file2.txt` 中的),可以交换两个文件的位置,并使用 `-12` 替换 `-23`:
```
comm -12 file2.txt file1.txt > diff2.txt
```
4. 如果你想看完全不一样的行(即在任一文件中都不相同的行),可以使用 `-13` 或 `-23` 的组合:
```
comm -13 file1.txt file2.txt > unique_to_file1.txt
comm -23 file1.txt file2.txt > unique_to_file2.txt
```
阅读全文