shell 基础 第二部分 ( cut ,sort, wc,uniq,tee ,tr)



第二部分:

1.cut   剪切 
cut -d   指定分割符
#cut  -d  ':'   -f   1  /etc/passwd
以:分割符
-f  1 打印第一段
[root@niejicai-linux ~]# cut -d ':' -f 1 /etc/passwd
root
bin
daemon
adm
lp
.................
也可以指定多段,要用,号。
[root@niejicai-linux ~]# cut -d ':' -f 1,3 /etc/passwd
root:0
bin:1
daemon:2
adm:3
lp:4
sync:5
shutdown:6
halt:7
.........................
user4:509
user0:5563

cut -c 指定分割符
#cut -c  2-5 /etc/passwd  (第二个字符,到第5个字符),
也是第几列的意思。
[root@niejicai-linux ~]# cut -c 2-5 /etc/passwd
oot:
in:x
aemo
dm:x
[root@niejicai-linux ~]# cut -c 1,10 /etc/passwd    也可以用号来分割
r0
b:
d2
a:
............

2.sort 排序

[ root@niejicai-linux ~]#  sort  -t ':' -k3 /etc/passwd      (以:号为分割,
以第3段进行排序)
不是按照多少进制,也不是按照数字的大小,是按照ASII。
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
--------
[root@niejicai-linux ~]# sort -t ':' -k3 -n /etc/passwd   
 (按照数字大小排序要加参数 -n)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
------
[ root@niejicai-linux ~]#  sort -t ':' -k3 -n /etc/passwd | cut -d ':' -f 3
0                                             (指定到段,精确到段)
1
2
3
4
-----
[root@niejicai-linux ~]# cut -d ':' -f 3 /etc/passwd | sort -n    (用了比较多,-n是按照数据的大小)
0
1
2
3
------
[ root@niejicai-linux ~]#  cut -d ':' -f 3 /etc/passwd | sort -nr       (-r表示反向)
5563
5562
5561
5506
-------
[ root@niejicai-linux ~]#  cut -d ':' -f 3 1.txt | sort -nru      (-u表示唯一的,去掉重复)
5563
5562
5561
5506
5505
509
..........
2
1
0
[ root@niejicai-linux ~]#  cut -d ':' -f 3 1.txt | sort -nr|uniq -c    (uniq -c可以显示重复数据的时候显示的次数)
      1 5563
      1 5562
      1 5561
      1 5506
     .......
      2 1
      1 0

3.wc 计数
[ root@niejicai-linux ~]# wc 1.txt
  44   59 2056 1.txt

[ root@niejicai-linux ~]# wc 3.txt
 6 10 58 3.txt
行数,单词,字符,文件名
[ root@niejicai-linux ~]# cat 3.txt
jiljdlaihdqlih
dadjo  eoejh ]d
 jjdj]
eid
ej ed
ei kweo
[ root@niejicai-linux ~]# vim 9.txt
[ root@niejicai-linux ~]# wc 9.txt
2 2 4 9.txt
[ root@niejicai-linux ~]# cat -A 9.txt
1$
2$
回车也是算是字符。

实验题:
 要你判断9.txt是否超过三行,如果没有超过,就输出一个NO

[ root@niejicai-linux ~]# line=`wc -l 9.txt | cut -d ' ' -f2`; echo $line
9.txt
[ root@niejicai-linux ~]# line=`wc -l 9.txt | cut -d ' ' -f1`; echo $line  2

[ root@niejicai-linux ~]# if [ $line -lt "3" ]; then echo "no"; fi
no


4.uniq  -c              重复的行显示出来。
uniq 去重复,最常用就一个 -c 用来统计重复的行数,
去重前要先排序sort 1.txt | uniq -c  


5.tee
后跟文件名,类似于>,比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上

[ root@niejicai-linux ~]# cat 9.txt | tee 1.log
1
2
[ root@niejicai-linux ~]# cat 1.log
1
2
类似于
[ root@niejicai-linux ~]# cat 9.txt > 1.log
[ root@niejicai-linux ~]# cat 1.
1.log  1.txt
[ root@niejicai-linux ~]# cat 1.log
1
2

6.tr

用来替换字符 
最常用的就是大小写转换: head -n2 /etc/passwd |tr '[a-z]' '[A-Z]' 
tr 替换一个字符也是可以的 grep 'root' /etc/passwd |tr 'r' 'R' 
[ root@niejicai-linux ~]# ls | tr 'a-z' 'A-Z'
10.TXT
12
1.LOG
1.TXT
234
.............

ROOT
[ root@niejicai-linux ~]# ls | tr  'A-Z' 'a-z'
10.txt
12
1.log
1.txt
234
..............
jicai
niejicailinux.txt
root

7.split 切割大文件用的

测试:
[ root@niejicai-linux ~]# for   i in `seq 1 10000` ;do cat /etc/                                        passwd >> 1.txt  ; done
[ root@niejicai-linux ~]# du -sh /etc/passwd
4.0K    /etc/passwd
[ root@niejicai-linux ~]# du -sb /etc/passwd
1943    /etc/passwd
[ root@niejicai-linux ~]# du -sh 1.txt
19M     1.txt
[ root@niejicai-linux ~]# wc -l 1.txt
410044 1.txt
[ root@niejicai-linux ~]# mkdir  nie
[ root@niejicai-linux ~]# mv 1.txt nie
[ root@niejicai-linux ~]# cd nie
[ root@niejicai-linux nie]# ls
1.txt
[ root@niejicai-linux nie]#  split -l 10000 1.txt
[ root@niejicai-linux nie]# ls
1.txt  xad  xah  xal  xap  xat  xax  xbb  xbf  xbj  xbn
xaa    xae  xai  xam  xaq  xau  xay  xbc  xbg  xbk  xbo
xab    xaf  xaj  xan  xar  xav  xaz  xbd  xbh  xbl  xbp
xac    xag  xak  xao  xas  xaw  xba  xbe  xbi  xbm
[ root@niejicai-linux nie]# wc -l *
  410044 1.txt
   10000 xaa
   10000 xab
   10000 xac
   ..................
   10000 xbm
   10000 xbn
   10000 xbo
      44 xbp
  820088 total
还可以换一个名字,如下
[ root@niejicai-linux nie]# rm -f x[ab]*
[ root@niejicai-linux nie]# ls
1.txt
[ root@niejicai-linux nie]# split  -l 10000 1.txt  a
[ root@niejicai-linux nie]# ls
1.txt  aad  aah  aal  aap  aat  aax  abb  abf  abj  abn
aaa    aae  aai  aam  aaq  aau  aay  abc  abg  abk  abo
aab    aaf  aaj  aan  aar  aav  aaz  abd  abh  abl
aac    aag  aak  aao  aas  aaw  aba  abe  abi  abm

[ root@niejicai-linux nie]# rm -f a*
[ root@niejicai-linux nie]# split -l 10000 1.txt niejicai
[ root@niejicai-linux nie]# ls
1.txt       niejicaiai  niejicaiar  niejicaiba  niejicaibj
niejicaiaa  niejicaiaj  niejicaias  niejicaibb  niejicaibk
niejicaiab  niejicaiak  niejicaiat  niejicaibc  niejicaibl
......................
[root@niejicai-linux nie]# split -b 2M 1.txt
[ root@niejicai-linux nie]# ls
1.txt       niejicaiak  niejicaiav  niejicaibg  xac
niejicaiaa  niejicaial  niejicaiaw  niejicaibh  xad
niejicaiab  niejicaiam  niejicaiax  niejicaibi  xae
niejicaiac  niejicaian  niejicaiay  niejicaibj  xaf
..............
[ root@niejicai-linux nie]# du -sh *
19M     1.txt
...............
2.0M    xaf
2.0M    xag
2.0M    xah
2.0M    xai
544K    xaj

8.&& 和 ||
command1 ; command2  前面命令是否执行完成都会执行后面命令
command1 && command2 只有前面命令执行成功才会执行后面命令
command1 || command2  只有前面命令不成功再去执行后面命令



第二部分:

1.cut   剪切 
cut -d   指定分割符
#cut  -d  ':'   -f   1  /etc/passwd
以:分割符
-f  1 打印第一段
[root@niejicai-linux ~]# cut -d ':' -f 1 /etc/passwd
root
bin
daemon
adm
lp
.................
也可以指定多段,要用,号。
[root@niejicai-linux ~]# cut -d ':' -f 1,3 /etc/passwd
root:0
bin:1
daemon:2
adm:3
lp:4
sync:5
shutdown:6
halt:7
.........................
user4:509
user0:5563

cut -c 指定分割符
#cut -c  2-5 /etc/passwd  (第二个字符,到第5个字符),
也是第几列的意思。
[root@niejicai-linux ~]# cut -c 2-5 /etc/passwd
oot:
in:x
aemo
dm:x
[root@niejicai-linux ~]# cut -c 1,10 /etc/passwd    也可以用号来分割
r0
b:
d2
a:
............

2.sort 排序

[ root@niejicai-linux ~]#  sort  -t ':' -k3 /etc/passwd      (以:号为分割,
以第3段进行排序)
不是按照多少进制,也不是按照数字的大小,是按照ASII。
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
--------
[root@niejicai-linux ~]# sort -t ':' -k3 -n /etc/passwd   
 (按照数字大小排序要加参数 -n)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
------
[ root@niejicai-linux ~]#  sort -t ':' -k3 -n /etc/passwd | cut -d ':' -f 3
0                                             (指定到段,精确到段)
1
2
3
4
-----
[root@niejicai-linux ~]# cut -d ':' -f 3 /etc/passwd | sort -n    (用了比较多,-n是按照数据的大小)
0
1
2
3
------
[ root@niejicai-linux ~]#  cut -d ':' -f 3 /etc/passwd | sort -nr       (-r表示反向)
5563
5562
5561
5506
-------
[ root@niejicai-linux ~]#  cut -d ':' -f 3 1.txt | sort -nru      (-u表示唯一的,去掉重复)
5563
5562
5561
5506
5505
509
..........
2
1
0
[ root@niejicai-linux ~]#  cut -d ':' -f 3 1.txt | sort -nr|uniq -c    (uniq -c可以显示重复数据的时候显示的次数)
      1 5563
      1 5562
      1 5561
      1 5506
     .......
      2 1
      1 0

3.wc 计数
[ root@niejicai-linux ~]# wc 1.txt
  44   59 2056 1.txt

[ root@niejicai-linux ~]# wc 3.txt
 6 10 58 3.txt
行数,单词,字符,文件名
[ root@niejicai-linux ~]# cat 3.txt
jiljdlaihdqlih
dadjo  eoejh ]d
 jjdj]
eid
ej ed
ei kweo
[ root@niejicai-linux ~]# vim 9.txt
[ root@niejicai-linux ~]# wc 9.txt
2 2 4 9.txt
[ root@niejicai-linux ~]# cat -A 9.txt
1$
2$
回车也是算是字符。

实验题:
 要你判断9.txt是否超过三行,如果没有超过,就输出一个NO

[ root@niejicai-linux ~]# line=`wc -l 9.txt | cut -d ' ' -f2`; echo $line
9.txt
[ root@niejicai-linux ~]# line=`wc -l 9.txt | cut -d ' ' -f1`; echo $line  2

[ root@niejicai-linux ~]# if [ $line -lt "3" ]; then echo "no"; fi
no


4.uniq  -c              重复的行显示出来。
uniq 去重复,最常用就一个 -c 用来统计重复的行数,
去重前要先排序sort 1.txt | uniq -c  


5.tee
后跟文件名,类似于>,比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上

[ root@niejicai-linux ~]# cat 9.txt | tee 1.log
1
2
[ root@niejicai-linux ~]# cat 1.log
1
2
类似于
[ root@niejicai-linux ~]# cat 9.txt > 1.log
[ root@niejicai-linux ~]# cat 1.
1.log  1.txt
[ root@niejicai-linux ~]# cat 1.log
1
2

6.tr

用来替换字符 
最常用的就是大小写转换: head -n2 /etc/passwd |tr '[a-z]' '[A-Z]' 
tr 替换一个字符也是可以的 grep 'root' /etc/passwd |tr 'r' 'R' 
[ root@niejicai-linux ~]# ls | tr 'a-z' 'A-Z'
10.TXT
12
1.LOG
1.TXT
234
.............

ROOT
[ root@niejicai-linux ~]# ls | tr  'A-Z' 'a-z'
10.txt
12
1.log
1.txt
234
..............
jicai
niejicailinux.txt
root

7.split 切割大文件用的

测试:
[ root@niejicai-linux ~]# for   i in `seq 1 10000` ;do cat /etc/                                        passwd >> 1.txt  ; done
[ root@niejicai-linux ~]# du -sh /etc/passwd
4.0K    /etc/passwd
[ root@niejicai-linux ~]# du -sb /etc/passwd
1943    /etc/passwd
[ root@niejicai-linux ~]# du -sh 1.txt
19M     1.txt
[ root@niejicai-linux ~]# wc -l 1.txt
410044 1.txt
[ root@niejicai-linux ~]# mkdir  nie
[ root@niejicai-linux ~]# mv 1.txt nie
[ root@niejicai-linux ~]# cd nie
[ root@niejicai-linux nie]# ls
1.txt
[ root@niejicai-linux nie]#  split -l 10000 1.txt
[ root@niejicai-linux nie]# ls
1.txt  xad  xah  xal  xap  xat  xax  xbb  xbf  xbj  xbn
xaa    xae  xai  xam  xaq  xau  xay  xbc  xbg  xbk  xbo
xab    xaf  xaj  xan  xar  xav  xaz  xbd  xbh  xbl  xbp
xac    xag  xak  xao  xas  xaw  xba  xbe  xbi  xbm
[ root@niejicai-linux nie]# wc -l *
  410044 1.txt
   10000 xaa
   10000 xab
   10000 xac
   ..................
   10000 xbm
   10000 xbn
   10000 xbo
      44 xbp
  820088 total
还可以换一个名字,如下
[ root@niejicai-linux nie]# rm -f x[ab]*
[ root@niejicai-linux nie]# ls
1.txt
[ root@niejicai-linux nie]# split  -l 10000 1.txt  a
[ root@niejicai-linux nie]# ls
1.txt  aad  aah  aal  aap  aat  aax  abb  abf  abj  abn
aaa    aae  aai  aam  aaq  aau  aay  abc  abg  abk  abo
aab    aaf  aaj  aan  aar  aav  aaz  abd  abh  abl
aac    aag  aak  aao  aas  aaw  aba  abe  abi  abm

[ root@niejicai-linux nie]# rm -f a*
[ root@niejicai-linux nie]# split -l 10000 1.txt niejicai
[ root@niejicai-linux nie]# ls
1.txt       niejicaiai  niejicaiar  niejicaiba  niejicaibj
niejicaiaa  niejicaiaj  niejicaias  niejicaibb  niejicaibk
niejicaiab  niejicaiak  niejicaiat  niejicaibc  niejicaibl
......................
[root@niejicai-linux nie]# split -b 2M 1.txt
[ root@niejicai-linux nie]# ls
1.txt       niejicaiak  niejicaiav  niejicaibg  xac
niejicaiaa  niejicaial  niejicaiaw  niejicaibh  xad
niejicaiab  niejicaiam  niejicaiax  niejicaibi  xae
niejicaiac  niejicaian  niejicaiay  niejicaibj  xaf
..............
[ root@niejicai-linux nie]# du -sh *
19M     1.txt
...............
2.0M    xaf
2.0M    xag
2.0M    xah
2.0M    xai
544K    xaj

8.&& 和 ||
command1 ; command2  前面命令是否执行完成都会执行后面命令
command1 && command2 只有前面命令执行成功才会执行后面命令
command1 || command2  只有前面命令不成功再去执行后面命令



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值