Linux Shell教程 - 如何删除重复的文本行

原创
ithorizon 7个月前 (10-04) 阅读数 49 #Linux

Linux Shell教程 - 怎样删除重复的文本行

在Linux系统中,常常需要处理文本文件,而文本文件中有时会出现重复的行,这大概会影响数据的精确性或程序的正确执行。由此,掌握怎样删除重复的文本行对于Linux用户来说是一项非常有用的技能。本文将介绍几种在Linux Shell中删除重复文本行的方法。

### 1. 使用 `uniq` 命令

`uniq` 是Linux中一个常用的命令,用于报告或删除文本文件中重复的行。以下是一个明了的使用示例:

bash

uniq 文件名.txt

上面的命令会输出文件 `文件名.txt` 中不重复的行。如果你想将因此保存到另一个文件中,可以使用重定向操作符 `>`:

bash

uniq 文件名.txt > 新文件名.txt

### 2. 使用 `awk` 命令

`awk` 是一个强盛的文本处理工具,可以用来删除重复行。以下是一个使用 `awk` 的示例:

bash

awk '!seen[$0]++' 文件名.txt

上面的命令中,`$0` 即当前行的内容,`seen` 是一个相关性数组,用于存储已经出现过的行。如果行内容已经在 `seen` 中存在,`seen[$0]++` 会返回 1,否则返回 0。通过这种对策,我们可以判断当前行是否重复。

如果你想将因此保存到另一个文件中,可以使用以下命令:

bash

awk '!seen[$0]++' 文件名.txt > 新文件名.txt

### 3. 使用 `sort` 和 `uniq` 组合

在某些情况下,你大概需要先对文件进行排序,然后再删除重复行。这时,可以将 `sort` 和 `uniq` 命令组合起来使用:

bash

sort 文件名.txt | uniq

如果你想将因此保存到另一个文件中,可以使用以下命令:

bash

sort 文件名.txt | uniq > 新文件名.txt

### 4. 使用 `comm` 命令

`comm` 命令可以用来比较两个文件,并输出只在一个文件中出现的行。以下是一个使用 `comm` 的示例:

bash

comm -23 文件1.txt 文件2.txt

上面的命令中,`-2` 即只输出第二个文件中出现的行,`-3` 即只输出第三个文件中出现的行。如果你想删除文件中的重复行,可以将 `comm` 命令与 `sort` 命令结合使用:

bash

sort 文件名.txt | comm -23 - 文件名.txt

上面的命令中,`-` 即从标准输入读取数据。

### 5. 使用 `sed` 命令

`sed` 是一个流编辑器,可以用来对文本进行修改。以下是一个使用 `sed` 删除重复行的示例:

bash

sed '/./{x;s/.*/&/p;N;G;/./b}' 文件名.txt

上面的命令中,`x` 即交换模式,`s/.*/&/p` 即打印当前行,`N` 即读取下一行,`G` 即将当前行和下一行合并。通过这种对策,我们可以删除重复的行。

如果你想将因此保存到另一个文件中,可以使用以下命令:

bash

sed '/./{x;s/.*/&/p;N;G;/./b}' 文件名.txt > 新文件名.txt

### 总结

以上介绍了五种在Linux Shell中删除重复文本行的方法。在实际应用中,你可以选用需要选择合适的命令组合。期待这篇文章能帮助你掌握这一技能。

本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: Linux


热门