利用Linux命令行进行文本按行去重并按重复次数排序利用linux命令行进行文本按行去重并按重复次数排序linux命令行提供linux命令去掉重复行了非常强大的文本处理功能linux命令去掉重复行,组合利用linux命令能实现好多强大的功能 。本文这里举例说明如何利用linux命令行进行文本按行去重并按重复次数排序 。主要用到的命令有sort,uniq和cut 。其中,sort主要功能是排序,uniq主要功能是实现相邻文本行的去重 , cut可以从文本行中提取相应的文本列(简单地说,就是按列操作文本行) 。用于演示的测试文件内容如下linux命令去掉重复行:[plain]Hello
World.
Apple
and
Nokia.
Hello
World.
I
wanna
buy
an
Apple
device.
The
Iphone
of
Apple
company.
Hello
World.
The
Iphone
of
Apple
company.
My
name
is
Friendfish.
Hello
World.
Apple
and
Nokia.
实现命令及过程如下:[plain]1、文本行去重
(1)排序
由于uniq命令只能对相邻行进行去重复操作 , 所以在进行去重前,先要对文本行进行排序,使重复行集中到一起 。
$
sort
test.txt
Apple
and
Nokia.
Apple
and
Nokia.
Hello
World.
Hello
World.
Hello
World.
Hello
World.
I
wanna
buy
an
Apple
device.
My
name
is
Friendfish.
The
Iphone
of
Apple
company.
The
Iphone
of
Apple
company.
(2)去掉相邻的重复行
$
sort
test.txt
|
uniq
Apple
and
Nokia.
Hello
World.
I
wanna
buy
an
Apple
device.
My
name
is
Friendfish.
The
Iphone
of
Apple
company.
2、文本行去重并按重复次数排序
(1)首先 , 对文本行进行去重并统计重复次数(uniq命令加-c选项可以实现对重复次数进行统计 。) 。
$
sort
test.txt
|
uniq
-c
2
Apple
and
Nokia.
4
Hello
World.
1
I
wanna
buy
an
Apple
device.
1
My
name
is
Friendfish.
2
The
Iphone
of
Apple
company.
(2)对文本行按重复次数进行排序 。
sort
-n可以识别每行开头的数字,并按其大小对文本行进行排序 。默认是按升序排列 , 如果想要按降序要加-r选项(sort
-rn) 。
$
sort
test.txt
|
uniq
-c
|
sort
-rn
4
Hello
World.
2
The
Iphone
of
Apple
company.
2
Apple
and
Nokia.
1
My
name
is
Friendfish.
1
I
wanna
buy
an
Apple
device.
(3)每行前面的删除重复次数 。
cut命令可以按列操作文本行 。可以看出前面的重复次数占8个字符 , 因此,可以用命令cut
-c
9-
取出每行第9个及其以后的字符 。
$
sort
test.txt
|
uniq
-c
|
sort
-rn
|
cut
-c
9-
Hello
World.
The
Iphone
of
Apple
company.
Apple
and
Nokia.
My
name
is
Friendfish.
I
wanna
buy
an
Apple
device.
下面附带说一下cut命令的使用,用法如下:[plain]cut
-b
list
[-n]
[file
...]
cut
-c
list
[file
...]
cut
-f
list
[-d
delim][-s][file
...]
上面的-b、-c、-f分别表示字节、字符、字段(即byte、character、field);
list表示-b、-c、-f操作范围 , -n常常表示具体数字;
file表示的自然是要操作的文本文件的名称;
delim(英文全写:delimiter)表示分隔符 , 默认情况下为TAB;
-s表示不包括那些不含分隔符的行(这样有利于去掉注释和标题)
三种方式中,表示从指定的范围中提取字节(-b)、或字符(-c)、或字段(-f) 。
范围的表示方法:
n
只有第n项
n-
从第n项一直到行尾
n-m
从第n项到第m项(包括m)
-m
从一行的开始到第m项(包括m)
-
【linux命令去掉重复行 linux 命令去重】从一行的开始到结束的所有项
在写这篇文章的时候,用到了vim的大小写转化的快捷键:gu变小写,gU变大写 。结合ctrl v能够将一片文字中的字符进行大小写转换,非常好用 。
linux去重命令linux去重命令是什么呢linux命令去掉重复行?
在介绍uniq命令之前,我们先来新建在下面的案例中需要用到的文件/tmp/uniq.txt,内容如下
默认情况下uniq只会检索相邻的重复数据从而去重 。在/tmp/uniq.txt中虽然“onmpw web site” 有三条,但是其中一条是和其他两条不相邻的,所以只去重了一条,同理“error php function”也是这种情况 。
鉴于以上的检索机制,所以uniq一般情况下要和sort命令一块儿使用 。
复制代码
# sort 1.txt | uniq
alpha css web
cat linux command
error php function
hello world
onmpw web site
recruise page site
repeat no data
wello web site
复制代码
现在再看是不是所有的重复项都已经经过去重处理了 。
好了,小试牛刀一把以后,下面我们开始对uniq命令的选项进行简单的介绍 。
-c 统计每一行数据的重复次数
复制代码
sort 1.txt | uniq -c
1 alpha css web
1 cat linux command
2 error php function
1 hello world
3 onmpw web site
1 recruise page site
1 repeat no data
1 wello web site
复制代码
我们看 “error php function”出现了两次,“onmpw web site”出现了三次 。其余的都没有重复项所以为1 。
-i 忽略大小写
在1.txt中添加一行数据 “Error PHP function”
复制代码
cat 1.txt
alpha css web
cat linux command
error php function
hello world
onmpw web site
onmpw web site
wello web site
Error PHP function
recruise page site
error php function
repeat no data
onmpw web site
复制代码
复制代码
sort 1.txt | uniq –c
1 alpha css web
1 cat linux command
2 error php function
1 Error PHP function
1 hello world
3 onmpw web site
1 recruise page site
1 repeat no data
1 wello web site
复制代码
我们看结果,uniq默认是区分大小写的 。使用-i可以忽略掉大小写问题
复制代码
sort 1.txt | uniq –c –i
1 alpha css web
1 cat linux command
3 error php function
1 hello world
3 onmpw web site
1 recruise page site
1 repeat no data
1 wello web site
复制代码
现在再看是不是大小写已经忽略掉了 。
-u 只输出没有重复的数据
复制代码
sort 1.txt | uniq –iu
alpha css web
cat linux command
hello world
recruise page site
repeat no data
wello web site
复制代码
看到没,结果中的“error php function”和“onmpw web site”都没有被输出 。
-w N 表示从第一个字符开始只检索N个字符来判重 。
复制代码
sort 1.txt | uniq –iw 2
alpha css web
cat linux command
error php function
hello world
onmpw web site
recruise page site
wello web site
复制代码
这里我们让uniq只对前两个字符进行检索,recruit 和 repeat前两个字符都是re,所以这两行也被认为是重复的 。
-f N 表示略过前面N个字段 , 从第N 1个字段开始检索重复数据 。以空格符或者tab键为分隔符 。
复制代码
sort 1.txt | uniq –icf 2
1 alpha css web
1 cat linux command
3 error php function
1 hello world
4 onmpw web site
1 repeat no data
1 wello web site
复制代码
我们在结果中可以看到,这是略过前面的2个字段,从第三个字段开始判重的 。“recruise page site” 和 “onmpw web site”的第三个字段相同 , 所以被认为是相同的数据 。但是我们看到 , “wello web site”和“onmpw web site”不但第三个字段相同,第二个也相同 。那为什么它不被计入“onmpw web site”的重复数据中呢 。对于这个问题就要回到前面说的,uniq只检测相邻的数据是否是重复的 。
要解决这个问题还需要在sort命令上着手 。还记得sort命令的-k选项吗 , 没错,我们就用它来解决 。
复制代码
sort –k 2 1.txt | uniq –icf 2
1 alpha css web
1 cat linux command
1 repeat no data
1 recruise page site
3 error php function
4 onmpw web site
1 hello world
复制代码
我们看,是不是解决了 。
-s N表示略过前面N个字符,关于这个选项的例子我们这里就不再举了,该选项和-f N的用法差不多 。只不过-f N是略过前面N个字段linux命令去掉重复行;-s是略过前面N个字符 。
-d 只输出有重复项的第一条的数据 。
sort 1.txt | uniq -idw 2
repeat no data
error php function
onmpw web site
结果只有这三条 。为什么会有“repeat no data”这条数据,这里注意-w 2的应用 。
-D 对于重复项全部输出
复制代码
sort 1.txt | uniq –iDw 2
repeat no data
recruise page site
error php function
error php function
Error PHP function
onmpw web site
onmpw web site
onmpw web site
复制代码
好了,关于uniq的选项的所有常用的命令已经都介绍完了 。关于uniq更详细的信息可以使用命令info uniq 。
linux写一个shell命令行从一个文件中存储删除重复行 在另一个文件的输出 。不使用任何脚本cat file1 |uniq -c file2文件1的重复行会将文件2的内容全部覆盖
cat file1 |uniq -c file2文件1的重复行将追加到文件2内
【shell】Linux删除文本重复行通常如果我们想获取一个文件里不重复的行的时候,我们可以直接通过 sort -u 命令,先把文件排序,然后去掉连续的重复行就行 。
可是,如果我们去掉重复行之后,还想保留文件原有的顺序,该怎么办呢?
虽然 Linux 下有个看上去似乎很有用的命令叫uniq,但事实上 uniq 命令仅仅只对连续的重复行有效 。
如果不排序,直接使用 uniq 命令是没有用的;使用 sort -u 的话 , 我们就丢失了文件原有的行的顺序了 。
一个终极的解决方案是使用 awk:
简要解释一下:awk 的基本执行流程是,对文件的每一行,做一个指定的逻辑判断 , 如果逻辑判断成立,则执行指定的命令;如果逻辑判断不成立,则直接跳过这一行 。
我们这里写的 awk 命令是!x[$0],意思是,首先创建一个 map 叫x,然后用当前行的全文$0作为 map 的 key,到 map 中查找相应的 value,如果没找到,则整个表达式的值为真,可以执行之后的语句;如果找到了,则表达式的值为假,跳过这一行 。
由于表达式之后有,因此如果某个 key 找不到对应的 value,该操作会先把对应的 value 设成 0,然后再自增成 1,这样下次再遇到重复的行的时候,对应的 key 就能找到一个非 0 的 value 了 。
我们前面说过,awk 的流程是先判断表达式,表达式为真的时候就执行语句,可是我们前面写的这个 awk 命令里只有表达式,没有语句,那我们执行什么呢?原来,当语句被省略的时候,awk 就执行默认的语句,即打印整个完整的当前行 。就这样,我们通过这个非常简短的 awk 命令实现了去除重复行并保留原有文件顺序的功能 。
linux命令分类总结 禁止在线上服务器使用
实例:
uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用 。也就是说,为了使uniq起作用,所有的重复行必须是相邻的 。
在一个指定的时间执行一个指定任务,只能执行一次,且需要开启atd进程
crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程
将任务打入后台
示例:
vmstat是Linux中监控内存的常用工具,可对操作系统的虚拟内存、进程、CPU等的整体情况进行监视.
sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等
常用:
Ping命令通过发送Internet控制消息协议(ICMP)回响请求消息来验证与另一台TCP/IP计算机的IP级连接
ss与netstat命令作用相同,但比netstat更高效,采用的是tcp协议栈中tcp_diag.
使用方法参考netstat,且基本参数相同
traceroute追踪网络数据包的路由途径
nslookup命令用于查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题
linux常用命令有哪些linux 常用命令有:
pwd 命令
使用 pwd 命令找出您所在的当前工作目录(文件夹)的路径 。该命令将返回一个绝对(完整)路径 , 该路径基本上是所有以 / 开头的目录的路径 。绝对路径的一个示例是 /home/username 。
cd 命令
要浏览 Linux 文件和目录,请使用 cd 命令 。根据您所在的当前工作目录,它需要目录的完整路径或名称 。假设您位于 /home/username / Documents 中,并且想要转到 Documents 的子目录 Photos 。为此,只需键入以下命令:cd Photos 。另一种情况是,如果您想切换到一个全新的目录,例如 /home/username / Movies 。在这种情况下,您必须输入 cd,然后输入目录的绝对路径:cd /home/username / Movies 。有一些快捷方式可帮助您快速导航:cd ..(带有两个点)将一个目录向上移动 cd 直接转到主文件夹 cd-(带连字符)移动到上一个目录附带说明一下,Linux 的 shell 是区分大小写的 。因此,您必须准确输入名称的目录 。
ls 命令
LS 命令用于查看目录的内容 。默认情况下,此命令将显示当前工作目录的内容 。如果要查看其他目录的内容,请键入 ls,然后键入目录的路径 。例如,输入 LS / 家 / 用户名 / 文档查看的内容的文件 。您可以使用 ls 命令使用以下变体:ls -R 还将列出子目录中的所有文件 ls -a 将显示隐藏的文件 ls -al 将列出文件和目录以及详细信息,例如权限,大小,所有者等 。
cat 命令
cat(连接的缩写)是 Linux 中最常用的命令之一 。它用于在标准输出(sdout)上列出文件的内容 。要运行此命令,请键入 cat,然后输入文件名及其扩展名 。例如:cat file.txt 。以下是使用 cat 命令的其他方法:cat filename 创建一个新文件 cat filename1 filename2 filename3 连接两个文件(1 和 2),并将它们的输出存储在新文件中(3)将文件转换为大写或小写使用,cat filename | tr a-z A-Z output.txt
cp 命令
使用 cp 命令将文件从当前目录复制到另一个目录 。例如,命令 cp scenery.jpg/home /username/ Pictures 将在您的 Pictures 目录中创建一个 Scene.jpg 副本(来自当前目录) 。
mv 命令
mv 命令的主要用途是移动文件,尽管它也可以用于重命名文件 。mv 中的参数类似于 cp 命令 。您需要输入 mv,文件名和目标目录 。例如:mv file.txt/home /username/ Documents 。
mkdir 命令
使用 mkdir 命令创建一个新目录 - 如果键入 mkdir Music,它将创建一个名为 Music 的目录 。还有一些额外的 mkdir 命令:要在另一个目录中生成新目录,请使用此 Linux 基本命令 mkdir Music / Newfile 使用 p(父级)选项在两个现有目录之间创建一个目录 。例如,mkdir -p Music / 2022 / Newfile 将创建新的 “2022” 文件 。
rmdir 命令
如果需要删除目录 , 请使用 rmdir 命令 。但是 , rmdir 仅允许您删除空目录 。
rm 命令
该 RM 命令用于删除目录以及其中的内容 。如果只想删除目录(作为 rmdir 的替代方法),请使用 rm -r 。注意:使用此命令时要格外小心,并仔细检查您所在的目录 。这将删除所有内容,并且没有撤消操作 。
touch 命令
该触摸命令允许您创建通过 Linux 命令行新的空白文件 。例如,输入 touch /home/username/Documents/Web.html 在 Documents 目录下创建一个名为 Web 的 HTML 文件 。
locate 命令
您可以使用此命令来定位文件,就像 Windows 中的搜索命令一样 。此外 , 将 - i 参数与该命令一起使用将使其不区分大小写 , 因此即使您不记得其确切名称,也可以搜索文件 。要搜索包含两个或多个单词的文件 , 请使用星号(*) 。例如 , locate -i school * note 命令将搜索包含单词 “school” 和 “ note” 的任何文件,无论它是大写还是小写 。
find 命令
在类似定位命令,使用 查找也搜索文件和目录 。区别在于,您可以使用 find 命令在给定目录中查找文件 。例如,find /home/-name notes.txt 命令将在主目录及其子目录中搜索名为 notes.txt 的文件 。使用查找时的其他变化 是:要查找当前目录中使用的文件 , 请使用 find . -name notes.txt 要查找目录 , 请使用 /-type d -name notes. txt13. grep 命令无疑对日常使用很有帮助的另一个基本 Linux 命令是 grep 。它使您可以搜索给定文件中的所有文本 。为了说明这一点 , grep blue notepad.txt 将在记事本文件中搜索单词 blue 。包含搜索到的单词的行将被完整显示 。
sudo 命令
该命令是 “SuperUser Do” 的缩写,使您能够执行需要管理或超级用户权限的任务 。但是,建议不要将此命令用于日常使用 , 因为如果您做错了一些事情,很容易发生错误 。
df 命令
使用 df 命令可获取有关系统磁盘空间使用情况的报告,以百分比和 KB 表示 。如果要以兆字节为单位查看报告,请输入 df -m 。
du 命令
如果要检查文件或目录占用了多少空间,答案是 du(磁盘使用情况)命令 。但是,磁盘使用情况摘要将显示磁盘块号,而不是通常的大小格式 。如果要以字节,千字节和兆字节为单位查看它,请在命令行中添加 - h 参数 。
head 命令
所述头命令用于查看任何文本文件的第一行 。默认情况下,它将显示前十行,但是您可以根据自己的喜好更改此数字 。例如,如果只想显示前五行 , 则键入 head -n 5 filename.ext 。
tail 命令
该命令与 head 命令具有相似的功能,但是 tail 命令将显示文本文件的最后十行,而不是显示第一行 。例如,tail -n filename.ext 。
diff 命令
diff 命令是差异的缩写,diff 命令逐行比较两个文件的内容 。分析文件后,它将输出不匹配的行 。程序员在需要进行程序更改时经常使用此命令,而不是重写整个源代码 。此命令最简单的形式是 diff file1.ext file2.ext
tar 命令
该 tar 命令是最常用的命令归档多个文件到一个压缩包 。类似于 zip 格式常见的 Linux 文件格式,压缩是可选的 。该命令具有很长的功能列表,非常复杂,例如将新文件添加到现有档案中,列出档案内容,从档案中提取内容等等 。查看一些实际示例 , 以了解有关其他功能的更多信息 。
chmod 命令
chmod 是另一个 Linux 命令,用于更改文件和目录的读取,写入和执行权限 。由于此命令相当复杂 , 因此您可以阅读完整的教程以正确执行它 。
chown 命令
在 Linux 中,所有文件均归特定用户所有 。该 CHOWN 命令使您可以更改或文件的所有权转让给指定的用户名 。例如,chown linuxuser2 file.ext 将使 linuxuser2 成为 file.ext 的所有者 。
Jobs 命令
jobs 命令将显示所有当前作业及其状态 。作业基本上是由 Shell 启动的进程 。
kill 命令
如果您的程序无响应 , 则可以使用 kill 命令手动终止它 。它将向运行异常的应用发送特定信号,并指示该应用自行终止 。您总共可以使用 64 个信号,但是人们通常只使用两个信号:SIGTERM(15) — 请求程序停止运行,并给它一些时间来保存其所有进度 。如果在输入 kill 命令时未指定信号,则将使用此信号 。SIGKILL(9) - 强制程序立即停止 。未保存的进度将丢失 。除了知道信号之外 , 您还需要知道要杀死的程序的进程标识号(PID) 。如果您不知道 PID,只需运行命令 ps ux 。在知道您要使用什么信号以及程序的 PID 之后,输入以下语法:kill [signal option] PID.
ping 命令
使用 ping 命令检查与服务器的连接状态 。例如,只需输入 ping google.com,该命令将检查您是否能够连接到 Google 并测量响应时间 。
wget 命令
Linux 命令行非常有用 - 您甚至可以在 wget 命令的帮助下从 Internet 下载文件 。为此,只需键入 wget,然后输入下载链接即可 。
uname 命令
该 UNAME 命令,短期对于 Unix 名,将打印您的 Linux 系统,如计算机名称的详细信息,操作系统,内核,等等 。
top 命令
作为与 Windows 中的任务管理器等效的终端,top 命令将显示正在运行的进程的列表以及每个进程使用的 CPU 数量 。监视系统资源使用情况非常有用 , 尤其是知道哪个进程由于消耗太多资源而需要终止时 。
history 命令
当您使用 Linux 一段时间后,您会很快注意到每天可以运行数百个命令 。因此 , 如果您想查看之前输入的命令,运行历史记录命令特别有用 。
man 命令
对某些 Linux 命令的功能感到困惑吗?不用担心,您可以使用 man 命令从 Linux 的外壳程序中轻松地学习如何使用它们 。例如,输入 man tail 将显示 tail 命令的手动指令 。
echo 命令
此命令用于将一些数据移到文件中 。例如 , 如果要将文本 “Hello,我的名字叫 John” 添加到名为 name.txt 的文件中,则可以键入 echo Hello, my name is Johnname.txt
zip,unzip 命令
使用 zip 命令将文件压缩到 zip 归档文件中,然后使用 unzip 命令从 zip 归档文件中提取压缩文件 。
hostname 命令
如果您想知道主机 / 网络的名称,只需键入 hostname 。在末尾添加 - I 将显示您的网络的 IP 地址 。
useradd,userdel 命令
linux命令去掉重复行的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于linux 命令去重、linux命令去掉重复行的信息别忘了在本站进行查找喔 。
推荐阅读
- gis开发工程师怎么入门,gis软件开发工程师的前景
- mysql导入成功没有表,mysql为什么导不入表
- flutter今日头条,android 今日头条
- linux切命令行界面 linux命令行怎么切换到图形界面
- 星火海外版服务器地址在哪,星火海外版ios
- b站如何进直播,b站怎么进入直播
- main函数c语言编程 main c语言
- 海信电视为什么不能投屏,海信电视为什么不能投屏4k
- 高中女生的体育游戏视频,体育小游戏高中生