本文共 3829 字,大约阅读时间需要 12 分钟。
管道符常营命令
cut:截取字符串,比如我们要以“:”作为分隔符,取第一列,
[root@localhost ~]# cat /etc/passwd |head -5|cut -d ":" -f1rootbindaemonadmlp这里-d是指定分割符,-f后面接数字,是指截取范围,上面的例子是截取第一段,就输入-f1,如果想
截取两段,就用“,”分开,后面再接一个数字。如f1,2。
如果是1-3段,后面就接1-3.
指定第几个字符 -c
[root@localhost ~]# cat /etc/passwd |head -2|cut -c4
tsort:排序,比如我们现在得到一列数字,或者是一列字符串,我们要由小到大做一个排序
[root@localhost ~]# sort /etc/passwd |head -1adm:x:3:4:adm:/var/adm:/sbin/nologin我们可以看到,sotr的排序是遵循英文字母的排序。这就是sort的作用。sort -n会以数字大小去排序
[root@localhost ~]# sort -n 1.txt<{
}root:x:0:0:root:/root:/bin/bashshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownsync:x:5:0:sync:/sbin:/bin/sync2222333322222222222aaaaaaa*我们需要注意的是,如果我们输入-n,那么文件里面的特殊符号和字符会被认为是0。所以特殊符号和字母会排在前面。
sotr-r反向排序,与-n正好相反
[root@localhost ~]# sort -r 1.txtsync:x:5:0:sync:/sbin:/bin/sync1111111111133333333333}wc -l 统计行数
[root@localhost ~]# cat 1.txt | wc -l20wc -m 统计字符数
[root@localhost ~]# cat 1.txt | wc -m499wc -w 统计词数,他是根据空格或者空白字符去分割的
[root@localhost ~]# cat 1.txt | wc -w20uniq去重复,他一般和sort在一起用,先排序,然后去重(最常用)
[root@localhost ~]# cat 2.txt123abc 1111,222123abc112然后我们排序,去重[root@localhost ~]# sort 2.txt |uniq11232abcabc 1111,222uniq -c统计重复次数
[root@localhost ~]# sort 2.txt |uniq -c2 12 1231 21 abc1 abc 1111,222tee:类似于>输出重定向。>输出重定向仅仅是将内容写入到目标文件,对我们看不到任何的内容,成功与否。这时候我们就使用tee取代">"。它不仅可以将内容重定向到目标文件,也可以将内容打印到屏幕上。[root@localhost ~]# sort 2.txt |uniq -c|tee a.txt2 12 1231 21 abc1 abc 1111,222这样我们就可以看到输出的内容了tee -a追加,和>> 作用类似。但是在追加的同时将内容打印在屏幕上
[root@localhost ~]# sort 2.txt |uniq -c|tee -a a.txt2 12 1231 21 abc1 abc 1111,222[root@localhost ~]# cat a.txt2 12 1231 21 abc1 abc 1111,2222 12 1231 21 abctr:替换字符,它支持写多个字符
[root@localhost ~]# echo "aminglinux" |tr '[al]' '[AL]'AmingLinux[root@localhost ~]# echo "aminglinux" |tr 'a' 'A' Aminglinux全部替换成大写[root@localhost ~]# echo "aminglinux" |tr '[a-z]' '[A-Z]'AMINGLINUXsplit:切割,将大文件切割成小文件。他有两种用法,一种是 -b大小默认单位是字节 ,一种是 -l行数。(系统默认是以x开头)
[root@localhost test]# split -b 1000 a.txt[root@localhost test]# lsa.txt xae xaj xao xat xay xbd xbi xbn xbs xbx xcc xch xcm xcr xcw xdb xdg xdl xdq xdv xea xef xek xep xeu xez xfe xfjxaa xaf xak xap xau xaz xbe xbj xbo xbt xby xcd xci xcn xcs xcx xdc xdh xdm xdr xdw xeb xeg xel xeq xev xfa xff xfkxab xag xal xaq xav xba xbf xbk xbp xbu xbz xce xcj xco xct xcy xdd xdi xdn xds xdx xec xeh xem xer xew xfb xfg xflxac xah xam xar xaw xbb xbg xbl xbq xbv xca xcf xck xcp xcu xcz xde xdj xdo xdt xdy xed xei xen xes xex xfc xfh xfmxad xai xan xas xax xbc xbh xbm xbr xbw xcb xcg xcl xcq xcv xda xdf xdk xdp xdu xdz xee xej xeo xet xey xfd xfi这就将a.txt按1000b切割完成了。我们也可以切割完后给他命名,不用系统给我们的名字,但是我们只能自定义它的前缀。
[root@localhost test]# ls
abcaa abcab a.txt xaa xabsplit -l按行切割,比如我们都按照1000行切割
[root@localhost test]# split -l 1000 a.txt[root@localhost test]# wc -l *1000 xaa1000 xab1000 xac这样每个文件都是1000行。后面接目标文件,就可以直接清空里面的内容。
[root@localhost ~]# > a.txt[root@localhost ~]# cat a.txt
注释符
#:在#号后面输入的shell都不回生效,它的作用是解释说明。$:变量前缀,!$组合,这则里面表示行位
;多条命名写到一行,用分号分割
[root@localhost ~]# ls 1.txt; wc -l 2.txt1.txt7 2.txt~:用户的家目录,在正则表达式里表示匹配符
&:命令放到后台去
:输出重定向,会把目标的内容全部替换
:追加重定向,会将内容追加到目标内容的结尾处
2>:错误输出重定向,和输出重定向作用一样2>>:最佳错误重定向,和追加重定向作用一样。&>:直接把正确和错误直接输入到目标文件中
【】:指定字符中的一个,经常用于替换,比如【0-9】,【a-zA-Z】,【abc】。
||:在shell代表或者,它用在两条命令中间。如果第一条命令执行成功,它就不会执行第二条命令,如果执行不成功,它就会执行第二条命令。
[root@localhost ~]# ls 1a.txt|| wc -l 2.txt ls: 无法访问1a.txt: 没有那个文件或目录7 2.txt第一条命令没有成功,它就执行了第二条[root@localhost ~]# ls 1.txt|| wc -l 2.txt1.txt第一条命令成功了,它就不执行第二条。&&:让两个命令连续执行,只有前面命令执行成功,后面命令才继续执行。
[root@localhost ~]# ls 1.txt&& wc -l 2.txt 1.txt7 2.txt只有前一个命令执行成功,后一个才会执行[root@localhost ~]# ls 1a.txt&& wc -l 2.txtls: 无法访问1a.txt: 没有那个文件或目录如果前一个命令不成功,那么后一条命名就不会执行。我们可以将||和&&理解成一个判断,||只有前面的命令不成功的时候才执行后面的命令,&&只有前面命令成功的时候才会执行后面的命令。
转载于:https://blog.51cto.com/13067688/2084383