sort 排序,去重
可以实现根据不同的数据类型进行排序,针对文本的内容,以行为单位来排序。
基础工作原理
sort将文件的每一行作为单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后升序进行输出。
[root@hecs-215335 ~]# cat sort1.txt #查看文件内容awk 12ends 33fire 09can 22know 01dead 35awk 12dead 32fire 09[root@hecs-215335 ~]# sort sort1.txt #排序,默认以升序排序awk 12awk 12can 22dead 32dead 35ends 33fire 09fire 09know 01[root@hecs-215335 ~]# sort -u sort1.txt #去除重复行awk 12can 22dead 32dead 35ends 33fire 09know 01[root@hecs-215335 ~]# sort -n -r sort1.txt #只按照数字排序,并且是降序awk 12awk 12can 22dead 32dead 35ends 33fire 09fire 09know 01#这里是0在前面!!!![root@hecs-215335 ~]# sort -n -r sort1.txt -o sort1.txt#-o 参数。直接将输出的内容重定向到指定文件 不需要再用 `>`[root@hecs-215335 ~]# sort -n -k 2 -t : sort1.txt #设置分隔符,以列排序#在txt文件中,按照数字排序,-k选择第2列排序,-t设置分隔符为:
-u去除重复的行
-n只以数字来排序,并且是1~0,并不是0-9
-r降序排序
-k选择针对某一列进行排序
-t设置分隔符
-f会将小写字母都转换为大写字母来进行比较,亦即忽略大小写
-c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1
-C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1
-M会以月份来排序,比如JAN小于FEB等等
-b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。
tr 替换字符
tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。
cat 1.txt | tr "abc" "123" #将文件中的abc转换为123cat 1.txt | tr "[a-z]" "[A-Z]" #将小写转换为大写cat 1.txt | tr "[0-9]" "[a-j]" #将0-9转换为a-jcat 1.txt | tr -d "small" #将small删除cat 1.txt | tr -s "1" "2" #将1转换为2 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
cut 截取,部分截取
cut命令在Linux和Unix中的作用是从文件中的每一行中截取出一些部分,并输出到标准输出中。我们可以使用 cut 命令从一行字符串中于以字节,字符,字段(分隔符)等单位截取一部分内容出来。
cut -d":" -f 1 /etc/passwd #-d设置分隔符,-f 截取第1行grep '/bin/bash' /etc/passwd| cut -d ':' -f 1,6 #以关键字查询文件 并且以:为切割符#获得第1列第6列内容grep '/bin/bash' /etc/passwd|cut -d ':' --complement -f 2 #以关键字查询文件#并且以:为切割符,排除显示第2列cut -d ':' -f1,7 --output-delimiter=' ' /etc/passwd|sort #以:为切割符,显示第#1和第7行。将分隔符显示为 "
paste 合并文件的列
paste指令会把每个文件以列对列的方式,一列列地加以合并。
vim aa.txt #随便创建两个文件vim bb.txtpaste aa.txt bb.txt #将两个文件内容合并aa 11bb 22cc 33dd 44ee 55ff 55paste -d- aa.txt bb.txt #将两个文件内容合并,以“-”aa-11bb-22cc-33dd-44ee-55ff-55paste -d"#@" aa.txt bb.txt cc.txt dd.txt #将两个文件内容合并,并且逐个用#@分割aa#11@as#asbb#22@bc#bccc#33@cd#cddd#44@de#deee#55@ef#efff#55@fg#fg
uniq 检查及删除文本文件中重复出现的行列
sort sort1.txt | uniq #文件排序并相邻去重sort sort1.txt | uniq -d #查找文件中的重复行uniq -s 3 sort1.txt #忽略前3个字符,对3个后的字符进行比较uniq -w 3 sort1.txt #只对前3个字符进行比较
tee 读取标准输入的数据,并将其内容输出成文件
tee qwq.123 #此时随便输入内容,就会将输入的内容添加到文件中!以上命令执行后,将提示用户输入需要保存到文件的数据,如下所示:My Linux #提示用户输入数据My Linux #输出数据,进行输出反馈
