shell特殊符_cut截取,sort排序,shell特殊符号

cut 命令

cut作用:截取字符串

用法如下:cat /etc/passwd |head -2 |cut -d ":" -f 1,2,4

  • 在管道符后面进行截取前面命令的输出。

  • cut -d " " 指定分割条件,比如 ":" ,就是以:进行分割。每到一个:就是一段。

  • -f 是指定截取哪一段。后面跟数字几,就是截取几段。如果想1到4段都要。就是-f 1-4

[root@localhost ~]# cat /etc/passwd |head -2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@localhost ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1
root
bin
[root@localhost ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2
root:x
bin:x
[root@localhost ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2,4
root:x:0
bin:x:1

  • 还有一种用法是 : -c,指定截取第几位,比如截取etc/passwd 的第四位。
[root@localhost ~]# cat /etc/passwd |head -2 |cut -c 4
t
:


排序命令: sort

用法: sort 加想要查看的文件

排序方式:没有环境变量影响的话,默认按照ASCLL码排序。

Linux sort命令的几个细节问题(sort并未按ASCII排序)https://blog.csdn.net/zenghui08/article/details/7938975

  • 新建一个文本,cat内容如下:
[root@localhost ~]# cat 1.txt
43
35
67
907890
hrshs
hsga
agsfh
.,12125
43
&%#@
^$%$
@%#

  • 用sort进行排序后内容如下:
[root@localhost ~]# sort 1.txt 
^$%$
@%#
&%#@
.,12125
35
43
43
67
907890
agsfh
hrshs
hsga

sort -n 以数字进行排序,其他数字以外的字符都当作为0,排在最前面。

[root@localhost ~]# sort -n 1.txt 
^$%$
@%#
&%#@
.,12125
agsfh
hrshs
hsga
35
43
43
67
907890

sort -r 反序显示

sort -t 分隔符,指定段排序(少用)

  • -t 用法 :sort -t 指定分隔符 -kn1,n2

wc统计命令

  • wc -l 统计行数
[root@localhost ~]# wc -l 1.txt 
12 1.txt

  • wc -m 统计字符数(包括换行符$)
[root@localhost ~]# wc -m 1.txt 
58 1.txt

  • wc -w 统计词数
[root@localhost ~]# wc -w 1.txt 
12 1.txt


uniq 去重复

  • 新建2.txt进行实验。
[root@localhost ~]# cat 2.txt 
1111
111
1111
1111
2222
2222
2222
3333
3333
3333
4
5
[root@localhost ~]# unip 2.txt 
-bash: unip: 未找到命令
[root@localhost ~]# uniq 2.txt 
1111
111
1111
2222
3333
4
5

结果发现是只有相邻的重复项才会去重,所以在去重的时候最好先排序。

[root@localhost ~]# sort 2.txt |uniq
111
1111
2222
3333
4
5
[root@localhost ~]# sort 2.txt |uniq -c
      1 111
      3 1111
      3 2222
      3 3333
      1 4
      1 5
[root@localhost ~]# 

tee 和 >类似,重定向的同时还在屏幕显示(需要在前面加上管道符)

  • 用法如下:
[root@localhost ~]# sort 2.txt |uniq -c |tee a.txt
      1 111
      3 1111
      3 2222
      3 3333
      1 4
      1 5
[root@localhost ~]# cat a.txt 
      1 111
      3 1111
      3 2222
      3 3333
      1 4
      1 5

tee -a 追加并显示内容。


tr 替换字符命令。

  • 用法如下:
[root@localhost ~]# echo "aminglinux" |tr 'a' 'A'
Aminglinux

[root@localhost ~]# echo "aminglinux" |tr '[anx]' '[ANX]'
AmiNgliNuX

[root@localhost ~]# echo "aminglinux" |tr '[a-z]' '[A-Z]'
AMINGLINUX


split 切割命令

用法:split -b 100M bigfile 切割bigfile文件,以文件大小大小进行切割,每100M切割一份

  • -b选项不指定大小的话默认大小是字节。

用法:split -l 1000 bigfile 切割bigfile文件,以行数多少进行切割,每1000行切割一份

  • 先做一个大文件准备切割。
[root@localhost ~]# find /etc/ -type f -name "*conf" -exec cat {} >> aa.txt \;
[root@localhost ~]# du -sh aa.txt 
160K	aa.txt

  • 然后用split -b 切割成1k每份。切割之后ls查看。
[root@localhost ~]# split -b 1000 aa.txt 
[root@localhost ~]# ls
1.txt            xab  xah  xan  xat  xaz  xbf  xbl  xbr  xbx  xcd  xcj  xcp  xcv  xdb  xdh  xdn  xdt  xdz  xef  xel  xer  xex  xfd  xfj  xfp  xfv  xgb
2.txt            xac  xai  xao  xau  xba  xbg  xbm  xbs  xby  xce  xck  xcq  xcw  xdc  xdi  xdo  xdu  xea  xeg  xem  xes  xey  xfe  xfk  xfq  xfw  xgc
aa.txt           xad  xaj  xap  xav  xbb  xbh  xbn  xbt  xbz  xcf  xcl  xcr  xcx  xdd  xdj  xdp  xdv  xeb  xeh  xen  xet  xez  xff  xfl  xfr  xfx  xgd
anaconda-ks.cfg  xae  xak  xaq  xaw  xbc  xbi  xbo  xbu  xca  xcg  xcm  xcs  xcy  xde  xdk  xdq  xdw  xec  xei  xeo  xeu  xfa  xfg  xfm  xfs  xfy
a.txt            xaf  xal  xar  xax  xbd  xbj  xbp  xbv  xcb  xch  xcn  xct  xcz  xdf  xdl  xdr  xdx  xed  xej  xep  xev  xfb  xfh  xfn  xft  xfz
xaa              xag  xam  xas  xay  xbe  xbk  xbq  xbw  xcc  xci  xco  xcu  xda  xdg  xdm  xds  xdy  xee  xek  xeq  xew  xfc  xfi 
  • “split -b 大小 文件 切割后文件名” 指定切割后文件命前缀。
[root@localhost ~]# split -b 1000 aa.txt aaa.
[root@localhost ~]# ls
1.txt   aaa.ai  aaa.as  aaa.bc  aaa.bm  aaa.bw  aaa.cg  aaa.cq  aaa.da  aaa.dk  aaa.du  aaa.ee  aaa.eo  aaa.ey  aaa.fi  aaa.fs  aaa.gc
2.txt   aaa.aj  aaa.at  aaa.bd  aaa.bn  aaa.bx  aaa.ch  aaa.cr  aaa.db  aaa.dl  aaa.dv  aaa.ef  aaa.ep  aaa.ez  aaa.fj  aaa.ft  aaa.gd
aaa.aa  aaa.ak  aaa.au  aaa.be  aaa.bo  aaa.by  aaa.ci  aaa.cs  aaa.dc  aaa.dm  aaa.dw  aaa.eg  aaa.eq  aaa.fa  aaa.fk  aaa.fu  aa.txt
aaa.ab  aaa.al  aaa.av  aaa.bf  aaa.bp  aaa.bz  aaa.cj  aaa.ct  aaa.dd  aaa.dn  aaa.dx  aaa.eh  aaa.er  aaa.fb  aaa.fl  aaa.fv  anaconda-ks.cfg
aaa.ac  aaa.am  aaa.aw  aaa.bg  aaa.bq  aaa.ca  aaa.ck  aaa.cu  aaa.de  aaa.do  aaa.dy  aaa.ei  aaa.es  aaa.fc  aaa.fm  aaa.fw  a.txt
aaa.ad  aaa.an  aaa.ax  aaa.bh  aaa.br  aaa.cb  aaa.cl  aaa.cv  aaa.df  aaa.dp  aaa.dz  aaa.ej  aaa.et  aaa.fd  aaa.fn  aaa.fx
aaa.ae  aaa.ao  aaa.ay  aaa.bi  aaa.bs  aaa.cc  aaa.cm  aaa.cw  aaa.dg  aaa.dq  aaa.ea  aaa.ek  aaa.eu  aaa.fe  aaa.fo  aaa.fy
aaa.af  aaa.ap  aaa.az  aaa.bj  aaa.bt  aaa.cd  aaa.cn  aaa.cx  aaa.dh  aaa.dr  aaa.eb  aaa.el  aaa.ev  aaa.ff  aaa.fp  aaa.fz
aaa.ag  aaa.aq  aaa.ba  aaa.bk  aaa.bu  aaa.ce  aaa.co  aaa.cy  aaa.di  aaa.ds  aaa.ec  aaa.em  aaa.ew  aaa.fg  aaa.fq  aaa.ga
aaa.ah  aaa.ar  aaa.bb  aaa.bl  aaa.bv  aaa.cf  aaa.cp  aaa.cz  aaa.dj  aaa.dt  aaa.ed  aaa.en  aaa.ex  aaa.fh  aaa.fr  aaa.gb


shell 特殊符号

$变量前缀,!$组合,正则里面表示行尾
; 多条命令写到一行,用分号分割
~ 用户家目录,后面正则表达式表示匹配符
& 放到命令后面,会把命令丢到后台
> >> 2> 2>> &>
[] 指定字符中的一个
||和&&,用于命令之间
  • || :如果||前面的命令提示成功,||后面的命令就不会执行,如果前面命令执行不成功,才会执行||后面的命令。
[root@localhost ~]# ls 1a.txt || wc -l 1.txt
ls: 无法访问1a.txt: 没有那个文件或目录
25 1.txt
[root@localhost ~]# ls 1.txt || wc -l 1.txt
1.txt
  • &&:如果前面的命令执行成功后,才会执行后面的命令,如果前面命令错了,就不会执行后面的命令了,
[root@localhost ~]# ls 1.txt && wc -l 1.txt
1.txt
25 1.txt
[root@localhost ~]# ls 1a.txt && wc -l 1.txt
ls: 无法访问1a.txt: 没有那个文件或目录

扩展学习:

转载于:https://my.oschina.net/u/3852961/blog/1823402

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值