📌  相关文章
📜  在命令行中从文件中删除重复输入 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:37:41.392000             🧑  作者: Mango

在命令行中从文件中删除重复输入 - Shell-Bash

在Shell或Bash中,有许多方法可以从文件中删除重复输入。这是一个非常有用的技能,因为有时候我们需要从一个大型的文件中提取某些信息,但文件中可能会有很多重复的信息。以下是一些可能的方法:

方法1: sort和uniq命令
sort file.txt | uniq > output.txt

这个命令将会首先对文件进行排序并输出不同的行到输出文件中。请注意,这个方法不仅仅适用于文本文件,还适用于任何包含了行的文件。

方法2: awk命令
awk '!a[$0]++' file.txt > output.txt

这个命令使用了一些特别的awk语法:$0 表示整行,a[$0]的意思是用第0个域的值作为数组的下标,如果a[$0]是0,那么a[$0]++的值就是1,否则就是2及以上。所以,!a[$0]++的意思就是如果这一行的值之前没有出现过就打印它。

方法3: perl命令
perl -ne 'print unless $a{$_}++' file.txt > output.txt

这个命令使用了Perl语言,-ne选项表示从输入文件中进行逐行处理。$a{$}++的意思和awk的数组类似。如果$a{$}是0,那么$a{$}++的值就是1,否则就是2及以上。因此,unless $a{$}++的意思是如果这个值之前没有出现过就打印它。

方法4: Python命令
python -c 'import sys;print "".join(set([i for i in sys.stdin]))' < file.txt > output.txt

这个命令使用了Python语言。sys.stdin是Python的stdin文件对象,可以从标准输入读取内容。上述代码读取标准输入的内容,将每一行作为一个元素添加到列表中,利用set集合的元素唯一性去重,并以空字符作为分隔符将列表转成字符串输出。

以上是几种常用的从文件中删除重复输入的方法。可以根据自己的需要选择其中之一。