博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day25:shell特殊符号及常用文本工具cut sort wc uniq tr
阅读量:6360 次
发布时间:2019-06-23

本文共 4613 字,大约阅读时间需要 15 分钟。

hot3.png

本节会介绍:cut   sort   wc   uniq   tee   tr    split等文档处理工具:

1、shell特殊符号:常用的符号如下:

*表示零个或多个任意字符

?表示一个任意字符

#表示注释符号(shell脚本中常用):

\表示脱义字符(特殊字符失去本来的含义)

$与!结合使用,“!$”表示上一条命令中的最后一个变量

;    分号,运行两个或两个以上的命令时使用

~  用户的家目录(root的家目录是/root/,普通用户的家目录是/home/username)

&  用这个命令可以某一条命令放在后台去运行

[ ] 中括号为一个字符的区间,表示中间的字符的任意有一个

[root@localhost ~]# ls *.txt               # “*” 可以匹配出任意个任意字符:11.txt  222.txt  2.txt  3.txt[root@localhost ~]# ls ?.txt               # “?” 只能表示一个任意字符:2.txt  3.txt[root@localhost ~]# c='$a$b'               #用”单引号“也可以脱义:[root@localhost ~]# echo $c$a$b [root@localhost ~]# c=\$a\$b               #”斜杠“也可脱义,作用同上:[root@localhost ~]# echo $c$a$b

2、cut命令:用于截取字符串:

格式cut    -d   '分隔符'     [  -cf  ]n                   #n是正整数

-d指定分隔符:分隔符要用单引号:(结合-f使用)

-f后面接第几个区块

-c后面接第几个字符

[root@localhost ~]# cat /etc/passwd|cut -d ':' -f1      #-f要结合-d一起使用:binroot
[root@localhost ~]# cat /etc/passwd|cut -c1|head -n2rb

3、sort命令:用于排序:[ -n   -r   -u   -kn1   -kn1,2  -t  ]

格式sort     [-t  '分隔符']     [options]   [filename]

options

-t指定分隔符:一般结合-kn使用:

-n使用纯数字方式排序:(默认字母和数字为0,会排序在前面,)

-r逆向排序

-kn1,n2表示由n1到n2区间排序,如果只写kn1,表示只对n1字段排序

sort不见任何选项,则从首字符开始,依次以ASCII码值进行比较,最后按升序输出:

[root@localhost ~]# cat 2.txt |sort            #默认以ASCII码排序:^*,#$11111222222222

-n和nr:纯数字方式排序和逆向排序:

[root@localhost ~]# cat 2.txt |sort -n           #以纯数字方式排序,特殊字符默认都为0:*#$2222111112222255555[root@localhost ~]# cat 2.txt |sort -nr         #也是是以纯数字方式排序,不过时倒序显示:5555522222111112222#$*

4、wc命令:用于统计文档的行数字符数词数

wc    [ options ]    filename

options

-l统计行数:     list

-m统计字符数:   member

-w统计词数:     word

[root@localhost ~]# cat 3.txt          #编写次文档内容做实验:123abc[root@localhost ~]# wc -l 3.txt        #统计文档的行数:2 3.txt[root@localhost ~]# wc -w 3.txt        #统计文档的词数:(单词):2 3.txt
[root@localhost ~]# wc -m 3.txt           #统计当前文档的字符数,发现明明是六个字符,却显示8个:8 3.txt[root@localhost ~]# cat -A 3.txt          #因为每行后面会有一个结束符‘$’:123$abc$

如上图:使用 wc   -m 统计字符数后,会发现文档里明明六个字符,统计时却显示八个字符,这是因为每行都会有一个结束符存在:

5、uniq   去重复:用于统计文档中的重复的文字

注:去重复之前需要先排序:一般需要结合sort使用,需要使用sort先排序

uniq     [ options ]    filename

options

-c=count,在每列旁边显示该行重复的次数

[root@localhost ~]# uniq -c 3.txt           #首先直接去重复,发现不完整:      2 123      1 abc      1 def      1 456      1 123      1 456[root@localhost ~]# sort -n 3.txt |uniq -c     #再次排序后再去重复,发现可以的:      1 abc      1 def      3 123      2 456

如上:我们第一次使用uniq去重复的时候,发现文字里还是有重复;所以需要使用sort先排序再去重复:如图例2:

6、tee:输出重定向:重定向的同时,也会输出显示在屏幕上

[root@localhost ~]# sort -n 2.txt |uniq -c |tee a.txt     #查看文件内容并重定向到a.txt:      1 11111:222      2 22222      1 33333      1 44444      1 55555[root@localhost ~]# cat 2.txt                       #查看文件内容:11111:2222222:1113333344444222222222255555[root@localhost ~]#

-a追加的命令

[root@localhost ~]# sort -n 2.txt |uniq -c |tee -a a.txt     #再次追加文件内容:      1 2222:111      1 11111:222      2 22222      1 33333      1 44444      1 55555[root@localhost ~]# cat a.txt                         #查看文件内容,发现发生变化:      1 2222:111      1 11111:222      2 22222      1 33333      1 44444      1 55555      1 2222:111      1 11111:222      2 22222      1 33333      1 44444      1 55555

7、tr替换字符

[root@localhost ~]# cat 1.txt |head -n2|tr '[a-z]' '[A-Z]'    #替换并再次查看文件内容:ROOT:X:0:0:ROOT:/ROOT:/BIN/BASHBIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN[root@localhost ~]# cat 1.txt |head -n2|tr 'r' 'R'          #替换单个字符并查看文件内容:Root:x:0:0:Root:/Root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin

8、split切割文件内容:     -b      -l    

split  -b     filename                           #按大小来切割文档,默认单位为byte:可自定义单位:

split   -l      filename                          #按行数来切割文档

[root@localhost test]# split -b 100 a.txt            #按文件大小来划分:[root@localhost test]# ls1.txt  a.txt  xaa  xab  xac[root@localhost test]# split -b 100 a.txt tt        #划分时可自定义文件名称:[root@localhost test]# ls1.txt  a.txt  ttaa  ttab  ttac[root@localhost test]# split -l 7 a.txt             #按行数来划分:[root@localhost test]# ls1.txt  a.txt  xaa  xab  xac  xad

9、特殊字符:   “”  “||”    “&&

command1;command2    :   不论command1是否执行成功,都会执行command2

command1 &&  command2  :   只有command1执行成功后,才会执行command2

command1  | |    command2 :   表示command1执行成功后,command2不执行,否则执行               command2:

[root@localhost test]# touch 1.txt;ls 1.txt         #表示都执行:1.txt[root@localhost test]# ls1.txt[root@localhost test]# ls 1.txt && mkdir dir    #表示第一条命令成功,才执行第二条命令:1.txt[root@localhost test]# ls1.txt  dir[root@localhost test]# ls a.txt && mkdir dir2   #当第一条命令失败时,第二条也不执行:ls: cannot access a.txt: No such file or directory[root@localhost test]# ls1.txt  dir
[root@localhost test]# ls a.txt || mkdir dir2      #表示第一条命令失败后,才会执行第二条命令:ls: cannot access a.txt: No such file or directory[root@localhost test]# ls1.txt  dir  dir2[root@localhost test]# ls 1.txt || mkdir dir3      #第一条命令成功了,则不会执行第二条命令:1.txt[root@localhost test]# ls1.txt  dir  dir2

 

 

 

 

 

 

 

转载于:https://my.oschina.net/yuanhaohao/blog/1843892

你可能感兴趣的文章
CentOS7.4安装配置mysql5.7 TAR免安装版
查看>>
解决IE二级链接无法打开故障
查看>>
Windows phone应用开发[16]-数据加密
查看>>
通用数据压缩算法简介
查看>>
The next Industry Standard in IT Monitoring, a python implementation Nagios like tool --- Shinken
查看>>
(笔记)找工作,该怎么进补
查看>>
div的显示和隐藏以及点击图标的更改
查看>>
(轉貼) Ubuntu將在ARM平台netbook上現身 (SOC) (News) (Linux) (Ubuntu)
查看>>
SQL注入测试工具:Pangolin(穿山甲)
查看>>
在html 的img属性里只显示图片的部分区域(矩形,给出开始点和结束点),其他部份不显示,也不要拉伸...
查看>>
程序员第二定律:量化管理在程序员身上永无可能
查看>>
ubuntu一些脚本的执行顺序
查看>>
类继承的结构
查看>>
Intel 被 ARM 逼急了
查看>>
testng + reportng 测试结果邮件发送
查看>>
百度亮相iDASH,推动隐私保护在人类基因组分析领域的应用
查看>>
Python「八宗罪」
查看>>
你的隐私还安全吗?社交网络中浏览历史的去匿名化
查看>>
NeurIPS 2018|如何用循环关系网络解决数独类关系推理任务?
查看>>
Windows 10 份额突破 40%,Windows 7 连跌四月终回升
查看>>