GVKun编程网logo

shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令(shell 特殊符号)

14

本篇文章给大家谈谈shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令,以及shell特殊符号的知识点,同时本文还将给你拓展11.17shell特殊符号cut命令,

本篇文章给大家谈谈shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令,以及shell 特殊符号的知识点,同时本文还将给你拓展11.17 shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令,shell特殊符号、25.shell特殊符号cut命令 sort wc uniq tee tr split命令、5-5 8 特殊符号 cut sort wc uniq tee tr split、8.10 shell特殊符号cut, sort,wc,uniq, tee,tr,split命令等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令(shell 特殊符号)

shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令(shell 特殊符号)

笔记内容:

l8.10 shell特殊符号cut命令

l8.11 sort_wc_uniq命令

l8.12 tee_tr_split命令

l8.13 shell特殊符号下

笔记日期:2017.8.16

8.10 shell特殊符号cut命令

特殊符号:

1.* 任意个任意字符通配符

wKioL1njhYXwkL_YAAJLC_4fPTc887.png



2.? 任意一个字符

wKiom1njiDzRHYmiAAF1-wFwkhs268.png



3.# 注释字符

一条命令前面加注释字符的话,命令就不会执

wKioL1njhYexE0UhAAFqNC6qQOk106.png



4.\ 脱义字符,有些字符是命令,所以需要脱义符来让这个字符变成普通字符,而非命令字符:

wKioL1njhYjiu-4dAAGL9_P0BN4344.png



5.| 管道符,把前面命令的输出结果交给后面的命令执行

wKiom1njiD-CQWuTAAHa3a1_xqI097.png




wKiom1njiEKzt9IgAAjPrD-aclY587.png



cut命令可以分割字符串,可以指定某个字符进行分割,例如我要分割passwd文件里的字符串,并以冒号为分割符,然后指定查看第一段字符串:

wKioL1njhY7i2sXqAAI14e5E4PU626.png



如果要查看两段需要加个逗号:

wKioL1njhavBxc3rAAIpHZBwCK4526.png



想要查看一个范围可以这么写:

wKiom1njiGLCDRQPAAJnVDl1xBo463.png



使用-c选项可以查看第几个字符,例如我也要查看第四个字符:

wKioL1njha2jNVIPAAInm6dZE-A523.png





8.11 sort_wc_uniq命令

sort命令可以对字符串或数字排序,排序的方法是安照ASCII码排序的,例如我排序passwd文件的内容:

wKioL1njhbmRzSTFAAlacaHhEXA293.png



例如排序一个含有特殊字符的文件:

wKiom1njiHTAoyqsAAlYbMjSyc0172.png



-n选项会照数字去排序,这时相对于数字来说字母和特殊符号相当于是零:

wKioL1njhhLQ6hTCAAbnxTuEXlc586.png



-r则是倒序排序:

wKiom1njiH-A2T4zAActaEovEEI211.png



wc -l命令是统计行数的:

wKioL1njhnqxUOOcAAFXOd6ZLQo371.png



-m选项则是统计字符数,包括换行符:

wKiom1njiTDQ1Kj0AAD-BJrXyGE674.png



- w选项是安照单词统计,这个单词是以逗号或者空格分开的一个个词:

wKioL1njhnyCHan-AAEGAgzxRGk313.png



uniq命令是去掉重复的字符:

wKiom1njiTbjtLFGAAo62i6FnZo868.png

wKiom1njiTfgvrD-AAMEPrKzg70395.png



uniq命令可以和sort命令搭配使用,先排序去重:

wKioL1njho7TiZajAAhLP0KK1GU644.png





8.12 tee_tr_split命令

tee命令和输出重定向有点像,它们的区别是tee是可以看到输出重定向的结果,>则不能看到:

wKioL1njhpDSakkPAAQeFaMXiyY055.png



tee -a 追加重定向:

wKiom1njig_yaYqiAAnoD-ymh14088.png



tr命令是用来替换字符的,针对字符来操作的:

wKioL1njh1zB1sxxAAQgwEenP6k981.png



split切割命令,可以用来切割文件,因为有些文件太大了,不方便查看,所以需要使用split来切割成多个文件来方便查看,split可以针对大小切割也可以针对行数切割:

wKiom1njihOB7-aQAAMuS7w11XI455.png

wKioL1njh16hbc-CAAMOlIvTLEw849.png

wKioL1njh2DRnsDDAANwvfv8yxA630.png

wKiom1njihmD6y6TAAYQoTZ9y5I913.png






8.13 shell特殊符号下

wKiom1njiiCClwPpAArYHEATv1Y261.png



想要把多条命令写在一行里,就需要使用分号分割:

wKiom1njilmjOz6TAAKF9NDuYxc805.png



||是或者的意思,写在两条命令中间的话只要左边的命令执行成功,那么右边的命令就不会执行。如果左边的命令执行失败,那么右边的命令就会执行:

wKioL1njh6Sy8ZUyAAJ6eDHMEtI840.png

wKioL1njh6fTPztKAAMHgosNUqA618.png



&&是并且的意思,只有左边的命令执行成功的时候,右边才会执行,只要左边的命令没有执行成功,那么右边的命令一定不会被执行:

wKiom1njil3T1BfvAAGll1Bh_P4589.png

wKioL1njh6fzUfaLAAFyaEWhE7A820.png

11.17 shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令,shell特殊符号

11.17 shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令,shell特殊符号

8.10 shell特殊符号 & cut命令

 特殊符号

 1.   *   任意个任意字符通配符

2.    ?     任意一个字符

3.    #     注释字符

一条命令前面加注释字符的话,命令就不会执行

4.    \     脱义字符,有些字符是命令,所以需要脱义符来让这个字符变成普通字符,而非命令字符:

5.    |     管道符,把前面命令的输出结果交给后面的命令执行

cut命令可以分割字符串,可以指定某个字符进行分割,例如我要分割passwd文件里的字符串,并以冒号为分割符,然后指定查看第一段字符串:

如果要查看两段需要加个逗号:

想要查看一个范围可以这么写:

使用    -c    选项可以查看第几个字符:

8.11 sort_wc_uniq命令

  sort命令可以对字符串或数字排序,排序的方法是安照ASCII码排序的,例如排序passwd文件的内容:

(按照字母排序的)

例如排序一个含有特殊字符的文件:vi aaa.txt

加    -n    选项会照数字去排序,这时相对于数字来说字母和特殊符号相当于是零:

 

    -r    则是倒序排序:

  wc -l   命令是统计行数的:

加    -m    选项则是统计字符数,包括换行符:

加    -w    选项是安照单词统计,这个单词是以逗号或者空格分开的一个个词:

  uniq  命令是去掉重复的字符:

uniq命令可以和sort命令搭配使用,先排序去重

8.12 tee_tr_split命令

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

tee -a 追加重定向。

tr命令是用来替换字符的,针对字符来操作的:

  split切割命令,可以用来切割文件,因为有些文件太大了,不方便查看,所以需要使用split来切割成多个文件来方便查看,split可以针对大小切割也可以针对行数切割:

常用选项 : -b  依据大小来分割文档,单位为byte

也可以指定目标文件名。 如:split -b500 passwd 123

    -l    :依据行数来分割文档

8.13 shell特殊符号下

想要把多条命令写在一行里,就需要使用分号分割:

    ||  是  或者  的意思,写在两条命令中间的话只要左边的命令执行成功,那么右边的命令就不会执行。如果左边的命令执行失败,那么右边的命令就会执行:

    &&  是  并且  的意思,只有左边的命令执行成功的时候,右边才会执行,只要左边的命令没有执行成功,那么右边的命令一定不会被执行:

25.shell特殊符号cut命令 sort wc uniq tee tr split命令

25.shell特殊符号cut命令 sort wc uniq tee tr split命令

8.10 shell特殊符号cut命令

8.11 sort wc uniq命令

8.12 tee tr split命令

8.13 shell特殊符号下

 

8.10 shell特殊符号cut命令:

~1. *任意个任意字符

通配符

~2. ?任意一个字符

代表任意的一个字符

~3. #注释字符

前面加#,代表不生效。可用在解释说明

~4. \脱义字符 (详细看实例)

取消掉原意,只代表他本身,可用\

~5. |管道符 下面有讲和管道符有关的命令

 

 

 

 

实例

4.

[root@afeilinux-01 ~]# a=1

[root@afeilinux-01 ~]# b=2

[root@afeilinux-01 ~]# c=$a$b 我们想让c=$a$b这串字符本身是不生效的,因为我们用$会调用a的变量

[root@afeilinux-01 ~]# echo $c 所以他会显示,a和b的变量

12

[root@afeilinux-01 ~]# c=''$a$b'' 我们可以加单引号来代表c=$a$b的本身

[root@afeilinux-01 ~]# echo $c

$a$b

[root@afeilinux-01 ~]# c=\$a\$b 也可以用脱义字符\反推一下,来代表$a或$b这些字符本身

[root@afeilinux-01 ~]# echo $c

$a$b

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

8.11 sort wc uniq命令:

 

几个和管道有关的命令

~1. cut分割,-d分隔符 -f指定段号 -c指定第几个字符

~2. sort排序,-n以数字排序 -r反序 -t分隔符 -kn1/-kn1,n2

遵循阿斯玛ASCII排序

-n会以数字排序,字母和特殊字符会默认为0.需注意

-nr会以数字反序来排列。跟-n是相反的

-t指定几段去排序,几乎用不到,作为了解

~3. wc -l统计行数 -m统计字符数 -w统计词

-l统计行数,之前用过

-m统计字符数时,也会统计隐藏字符,比如换行符$

-w以空白字符作为分隔符,来统计有多少词 用的不多,作为了解

~4. uniq去重,-c统计行数

一般跟sort同时使用,先排序,后去重。sort 2.txt |uniq

 

 

实例:

1.

[root@afeilinux-01 ~]# cat /etc/passwd | head -2 我们列出passwd的前两行

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

[root@afeilinux-01 ~]# cat /etc/passwd | head -2 |cut -d ":" -f 1 用cut分割,-d表示用什么分割,用双引号引起来。-f表示分隔符:的第一段

root
bin

[root@afeilinux-01 ~]# cat /etc/passwd | head -2 |cut -d ":" -f 1,2 cut一二段的时候用,分割

root:x
bin:x

[root@afeilinux-01 ~]# cat /etc/passwd | head -2 | cut -d ":" -f 1-3 cut一二三段的时候,直接写1-3即可

root:x:0
bin:x:1

[root@afeilinux-01 ~]# cat /etc/passwd |head -2 |cut -c 4 用-c的时候就不要用-d -f了,指定第几个字符。前两行的第四个字符就是 t和:

t
:

[root@afeilinux-01 ~]# sort /etc/passwd 会发现sort后的排序是按照abcdefg来排序的

adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

[root@afeilinux-01 ~]# head /etc/passwd >> 1.txt 我们再来追加一些到1.txt

[root@afeilinux-01 ~]# vim !$ 并在里面加点特殊字符

vim 1.txt

[root@afeilinux-01 ~]# sort 1.txt 在sort,他会这样排序

222eqweqw

%231243214214214

[244234

adm:x:3:4:adm:/var/adm:/sbin/nologin

!asrar

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

halt:x:7:0:halt:/sbin:/sbin/halt

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

root:x:0:0:root:/root:/bin/bash

]saffsdfds

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

sync:x:5:0:sync:/sbin:/bin/sync

 

3.

[root@afeilinux-01 ~]# wc -l 22.txt 行数 3行

5 22.txt

[root@afeilinux-01 ~]# wc -m 22.txt 统计字符数,隐藏字符也会统计,比如换行符$

71 22.txt

[root@afeilinux-01 ~]# cat -A 22.txt 用cat -A就可以看到换行符

111111111111111$
22222222222222222$
3333333333333333333333$
444444444444$
$

[root@afeilinux-01 ~]# wc -w 22.txt

4 22.txt

[root@afeilinux-01 ~]# cat !$

cat 22.txt
111111111111111
22222222222222222
3333333333333333333333
444444444444

 

4.

[root@afeilinux-01 ~]# cat 2.txt 先cat一下

33

555

666

555

666111

333

444

333

555

666

[root@afeilinux-01 ~]# uniq 2.txt uniq并没有什么效果,因为没有sort


111111111111111
111111111111111
33333333333333
66666666666666
22222222222222
33333333333333
4444444444444
5555555555555
6666666666666
7777777777777777
8888888888888
99999999999999

[root@afeilinux-01 ~]# sort 2.txt | uniq 我们先sort再uniq,就去重了

111111111111111
22222222222222
33333333333333
4444444444444
5555555555555
6666666666666
66666666666666
7777777777777777
8888888888888
99999999999999

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

8.12 tee tr split命令:

 

~5. tee和>类似,重定向的同时还在屏幕显示

需要加|,|tee这样来用

tee -a追加的效果,并在屏幕上显示。类似于>>

~6. tr替换字符,tr ''a'' ''b'',大小写替换tr ''[a-z]'' ''[A-Z]''

~7. split 切割,-b大小(默认单位字节),-l行数

将一个大文件切割成多个小文件

 

实例:

 

5.

[root@afeilinux-01 ~]# sort 2.txt |uniq -c >a.txt 用>并不会显示在屏幕上

[root@afeilinux-01 ~]# sort 2.txt |uniq -c |tee a.txt 将>换成|tee,重定向的同时还能打印在屏幕上

      2 111111111111111
      1 22222222222222
      2 33333333333333
      1 4444444444444
      1 5555555555555
      1 6666666666666
      1 66666666666666
      1 7777777777777777
      1 8888888888888
      1 99999999999999

 

6.

[root@afeilinux-01 ~]# echo ''aminglinux'' |tr ''a'' ''b''

bminglinux

[root@afeilinux-01 ~]# echo ''aminglinux'' |tr ''a-z'' ''A-Z''

AMINGLINUX

[root@afeilinux-01 ~]# echo ''aminglinux'' |tr ''[al]'' ''[AL]'' 支持多个,但要加[]

AmingLinux

 

7.

[root@afeilinux-01 ~]# find /etc/ -type f -name ''*conf'' -exec cat {} >> a.txt \;

[root@afeilinux-01 ~]# du -sh a.txt

224K	a.txt

[root@afeilinux-01 test]# split -b 100k a.txt 指定100k一个分割

[root@afeilinux-01 test]# ls

22.txt  2.txt  a.txt  xaa  xab  xac

a.txt xaa xab xac 不指定名字以x开头

[root@afeilinux-01 test]# split -b 100k a.txt abc. 指定名字为abc.开头

[root@afeilinux-01 test]# ls

22.txt  2.txt  abc.aa  abc.ab  abc.ac  a.txt  xaa  xab  xac

[root@afeilinux-01 test]# split -l 1000 a.txt abc. 指定1000行一个分割

[root@afeilinux-01 test]# ls

abc.aa abc.ab abc.ac abc.ad abc.ae abc.af abc.ag a.txt xaa xab xac

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

8.13 shell特殊符号下:

 

~1. $变量前缀。!$组合,正则里面表示行尾

~2. ;多条命令写到一行。用分号分割

~3. ~用户家目录,后面正则表达式表示匹配符

~4. &放到命令后面,会把命令丢到后台

~5. > >> 2> 2>> &>

&>表示正确的和错误的都输入到一个文件里去

~6. []指定字符中的一个,[0-9],[a-zA-Z],[abc]

~7. ||和&&,用于命令之间

||运行在shell当中表示或者的意思

||放在两条命令之间,前面的命令执行不成功会执行后面的命令。前面的执行成功不在执行后面的

 

&&与||相反

&&放在两条命令之间,前面的命令执行成功才会执行后面的命令。前面的命令不成功不会执行后面的命令

 

 

实例:

2.

[root@afeilinux-01 ~]# du -sh 22.txt ; wc -l 2.txt 多条命令之间用;分割

4.0K	22.txt
12 2.txt 显示两条不同的命令

 

7.

[root@afeilinux-01 ~]# ls

1.txt 22.txt 2.txt anaconda-ks.cfg

[root@afeilinux-01 ~]# ls 11.txt || wc -l 2.txt ||前面执行不成功,才执行后面的

ls: 无法访问11.txt: 没有那个文件或目录
12 2.txt

[root@afeilinux-01 ~]# ls 1.txt || wc -l 2.txt ||前面执行成功,不执行后面的

1.txt

[root@afeilinux-01 ~]# ls 1.txt && wc -l 2.txt &&前面的执行成功,才执行后面的

1.txt
12 2.txt

[root@afeilinux-01 ~]# ls 11.txt && wc -l 2.txt &&前面的执行不成功,不执行后面的

ls: 无法访问11.txt: 没有那个文件或目录

 

 

 

扩展实例:

如果一个目录不存在,我才创建

[ -d axin ]

[root@afeilinux-01 ~]# ls

1.txt  22.txt  2.txt  abc.aa  abc.ab  abc.ac  abc.ad  abc.ae  abc.af  abc.ag  a.txt  xaa  xab  xac

[root@afeilinux-01 ~]# [ -d axin ] || mkdir axin 使用||,前面的不存在,才创建

[root@afeilinux-01 ~]# ls

1.txt  22.txt  2.txt  abc.aa  abc.ab  abc.ac  abc.ad  abc.ae  abc.af  abc.ag  a.txt  axin  xaa  xab  xac

如果使用&&呢?

[root@afeilinux-01 ~]# [ -d axin ] && mkdir axin 使用&&,前面的虽然成功了,但执行后面已经存在的目录就会报错

mkdir: 无法创建目录"axin": 文件已存在

 

5-5 8 特殊符号 cut sort wc uniq tee tr split

5-5 8 特殊符号 cut sort wc uniq tee tr split

8.10 shell特殊符号cut命令

特殊符号

  • “*” 代表零个或多个字符
  • “?” 代表一个字符
  • “#” 注释符号
  • “\” 脱意符号
  • “|” 管道符

cut用法

[root@lixiang01 ~]# cat /etc/passwd |head -2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@lixiang01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,5
root:root
bin:bin
  • cut分割,用来显示行中的指定部分
    • -d 判定分隔符
    • -f 要那段
    • -c指定第几个字符

8.11 sort_wc_uniq命令

sort 用法

按字符编码表排序

[root@lixiang01 ~]# head /etc/passwd > 1.txt
[root@lixiang01 ~]# vi 1.txt
[root@lixiang01 ~]# sort 1.txt
<
>
@#
2112
222
3421
432
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
{e33
]f
*%$#fs
halt:x:7:0:halt:/sbin:/sbin/halt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
perator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
sfae
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sjfoen
sync:x:5:0:sync:/sbin:/bin/sync

按字符的数值排序

[root@lixiang01 ~]# sort -n 1.txt
<
>
@#
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
{e33
]f
*%$#fs
halt:x:7:0:halt:/sbin:/sbin/halt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
perator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
sfae
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sjfoen
sync:x:5:0:sync:/sbin:/bin/sync
222
432
2112
3421

倒置参数:-r

[root@lixiang01 ~]# sort -n -r 1.txt
3421
2112
432
222
sync:x:5:0:sync:/sbin:/bin/sync
sjfoen
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sfae
root:x:0:0:root:/root:/bin/bash
perator:x:11:0:operator:/root:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
*%$#fs
]f
{e33
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
@#
>
<
  • sort 排序,将文件进行排序,并将排序结果标准输出(按ASCⅡ排序需要调整/etc/)
    • -n 以数字排序
    • -r 反序
    • -t分隔符
    • -kn1/-kn1,n2 指定段排序

wc 用法

[root@lixiang01 ~]# 
[root@lixiang01 ~]# wc -m 1.txt 字符数
436 1.txt
[root@lixiang01 ~]# wc -w 1.txt 词汇数(只要不空格就算一个词)
22 1.txt
[root@lixiang01 ~]# wc -l 1.txt 行数
22 1.txt


  • wc 统计,统计并打印换行符,词数,字符数
    • -l 统计行数
    • -m 统计字符数
    • -w 统计词

uniq用法

[root@lixiang01 ~]# vi 2.txt
[root@lixiang01 ~]# sort 2.txt |uniq -c
      3 1
      2 112
      2 123
      1 2
      2 33
      3 4
      2 5
      2 6
  • uniq 去重,
    • -c显示重复数
    • 单独使用只能去重相邻行,常常与sort结合使用

8.12 tee_tr_split命令

tee用法

[root@lixiang01 ~]# >a.txt
[root@lixiang01 ~]# cat a.txt
[root@lixiang01 ~]# sort 2.txt |uniq -c |tee a.txt
      3 1
      2 112
      2 123
      1 2
      2 33
      3 4
      2 5
      2 6
[root@lixiang01 ~]# cat a.txt
      3 1
      2 112
      2 123
      1 2
      2 33
      3 4
      2 5
      2 6
[root@lixiang01 ~]# sort 2.txt |uniq -c |tee -a a.txt
      3 1
      2 112
      2 123
      1 2
      2 33
      3 4
      2 5
      2 6
[root@lixiang01 ~]# cat a.txt
      3 1
      2 112
      2 123
      1 2
      2 33
      3 4
      2 5
      2 6
      3 1
      2 112
      2 123
      1 2
      2 33
      3 4
      2 5
      2 6
  • tee, 和>类似,重定向的同时还在屏幕显示
    • -a 类似追加重定向

tr 用法

[root@lixiang01 ~]# echo "axianglinux" |tr ''[al]'' ''[AL]''
AxiAngLinux

  • tr替换字符,tr''a''''b'',大小写替换tr‘[a-z]''''[A-Z]''

split用法

[root@lixiang01 test]# find /etc/ -type f -name "*conf" -exec cat {} >> a.txt \;
[root@lixiang01 test]# split -b 10000 a.txt
[root@lixiang01 test]# ls
a.txt  xab  xad  xaf  xah  xaj  xal  xan  xap
xaa    xac  xae  xag  xai  xak  xam  xao  xaq
[root@lixiang01 test]# cat a.txt >> b.txt
[root@lixiang01 test]# cat a.txt >> b.txt
[root@lixiang01 test]# rm -f x*
[root@lixiang01 test]# rm -f a*
[root@lixiang01 test]# wc -l b.txt
8662 b.txt
[root@lixiang01 test]# split -l 1000 b.txt  
[root@lixiang01 test]# ls
b.txt  xaa  xab  xac  xad  xae  xaf  xag  xah  xai
[root@lixiang01 test]# wc -l *
  8662 b.txt
  1000 xaa
  1000 xab
  1000 xac
  1000 xad
  1000 xae
  1000 xaf
  1000 xag
  1000 xah
   662 xai
 17324 总用量
[root@lixiang01 test]# 

  • split切割,可以将一个大文件分割成很多个小文件
    • -b大小(默认单位字节),
    • -l行数

8.13 shell特殊符号下

  • $ 变量前缀,!$组合,正则里面表示行尾
  • ; 多条命令写到一行,用分号分割,可以逐个执行并按顺序输出
  • ~ 用户家目录,会把命令丢到后台
  • & 放到命令后面,会把命令丢到后台
  • > >> 2> 2>> &> //正确重定向 正确追加 错误重定向 错误追加 不区分重定向
  • []指定字符中的一个,[0-9],[a-zA-Z],[abc]
  • ||和&&,用于命令之间,

||和&&用法

||表示你不行我来就来,&&表示你先来,可以我就上

[root@lixiang01 ~]# ls 1a.txt ; wc -l 2.txt
ls: 无法访问1a.txt: 没有那个文件或目录
17 2.txt
[root@lixiang01 ~]# ls 1a.txt || wc -l 2.txt //前面命令不成功,继续
ls: 无法访问1a.txt: 没有那个文件或目录
17 2.txt
[root@lixiang01 ~]# ls 1.txt || wc -l 2.txt //前面命令成功则停止
1.txt
[root@lixiang01 ~]# ls 1a.txt && wc -l 2.txt //前面命令不成功,停止
ls: 无法访问1a.txt: 没有那个文件或目录
[root@lixiang01 ~]# ls 1.txt && wc -l 2.txt //前面命令成功,继续
1.txt
17 2.txt

相关测验题目:http://ask.apelearn.com/question/5437

扩展

  1. source exec 区别 http://alsww.blog.51cto.com/2001924/1113112
  2. Linux特殊符号大全http://ask.apelearn.com/question/7720
  3. sort并未按ASCII排序 http://blog.csdn.net/zenghui08/article/details/7938975

8.10 shell特殊符号cut, sort,wc,uniq, tee,tr,split命令

8.10 shell特殊符号cut, sort,wc,uniq, tee,tr,split命令

shell特殊符号cut命令

  • cut 分割,-d 分隔符 -f 指定段号 -c 指定第几个字符
  • sort 排序, -n 以数字排序 -r 反序 -t 分隔符 -kn1/-kn1,n2
  • wc -l 统计行数 -m 统计字符数 -w 统计词
  • uniq 去重, -c统计行数
  • tee 和>类似,重定向的同时还在屏幕显示
  • tr 替换字符,tr ''a'' ''b'',大小写替换tr ''[a-z]'' ''[A-Z]''
  • split 切割,-b大小(默认单位字节),-l行数

cut命令

  • cut命令用来截取某个字符串
  • 格式:cut –d “分割符” 文件名
  • -d:后面跟分割字符,分割字符用双引号括起来;
  • -f:后面跟接第几段字符串
  • -c:后面接第几个字符

  1. 截取第1到第3段
[root@linux-128 ~]# head -5 1.txt |cut -d ":" -f 1-3
root:x:0
bin:x:1
daemon:x:2
adm:x:3
lp:x:4

  1. 截取第1段和第3段
[root@linux-128 ~]# head -5 1.txt |cut -d ":" -f 1,3
root:0
bin:1
daemon:2
adm:3
lp:4

  1. 截取第2个字符
[root@linux-128 ~]# head -5 1.txt |cut -c 2
o
i
a
d
p

  1. 截取第2个字符到第5个字符
[root@linux-128 ~]# head -5 1.txt |cut -c 2-5
oot:
in:x
aemo
dm:x
p:x:

sort命令

  • sort命令用做排序,格式sort [-t 分割符] [-kn1,n2] [-nur],n1,n2指的是数字
  • -t 分割符
  • -k 按第几列排序;区间范围用逗号-k3,5
  • -n 按数字排序
  • -r 反序排序,按从打到小排序
  • -u 去重复
  • -un 字母开头的会识别成重复内容,如skj1 a weotj 都会认为是重复内容,只显示数字内容

  1. sort 不加任何选项,从首行字符向后,依次按ASCII码值进行比较,按升序排序
[root@linux-128 ~]# vim 2.txt
111
111
111
111aaa
121
!@#$@123
1asd
abab
abab
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
root:x:0:0:root:/root:/bin/bash

  1. 以数字排序
[root@linux-128 ~]# sort -n 2.txt
!@#$@123
abab
abab
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
1asd
111
111
111
111aaa
121

  • 注意:如果有字母或者特殊符号,在数字排序中,都默认看成0.
  1. 反向排序
[root@linux-128 ~]# sort -nr 2.txt
121
111aaa
111
111
111
1asd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
abab
abab
!@#$@123

  1. 去重复,这里把字母都看成了0,然后去重复。
[root@linux-128 ~]# sort -nu 2.txt
abab
1asd
111
121

wc命令

  • wc命令用于统计文档的行数,字符数,单词数。
  • -l 统计行数
  • -m统计字符数
  • -w统计单词数

  1. 查看文件3.txt 行数
[root@linux-128 ~]# cat 3.txt
abab
1asd
111
121
[root@linux-128 ~]# wc -l 3.txt
4   3.txt

  1. 查看文件3.txt字符有多少个,$为行尾字符
[root@linux-128 ~]# cat -A 3.txt
abab$
1asd$
111$
121$
[root@linux-128 ~]# wc -m 3.txt
18 3.txt

  1. -w统计单词,它是以空格或者空白字符来分割。
[root@linux-128 ~]# cat 3.txt
abab
1asd
111
121
[root@linux-128 ~]# wc -w 3.txt
4 3.txt

  1. 如果wc后面不加任何选项,直接跟文档,则会把行数,单词数,字符数依次输出。
[root@linux-128 ~]# wc 3.txt
 4  4 18 3.txt

uniq命令

  • uniq命令用来删除重复的行,通常和sort连在一起使用
  • -c选项比较常用,它表示统计重复的行数,并把行数写在前面

[root@linux-128 ~]# sort 2.txt
111
111
111
111aaa
121
!@#$@123
1asd
abab
abab
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
root:x:0:0:root:/root:/bin/bash

  1. 先排序然后删除重复行
[root@linux-128 ~]# sort 2.txt |uniq -c
      3 111
      1 111aaa
      1 121
      1 !@#$@123
      1 1asd
      2 abab
      1 adm:x:3:4:adm:/var/adm:/sbin/nologin
      1 bin:x:1:1:bin:/bin:/sbin/nologin
      1 daemon:x:2:2:daemon:/sbin:/sbin/nologin
      1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
      1 root:x:0:0:root:/root:/bin/bash

[root@linux-128 ~]# sort 2.txt |uniq
111
111aaa
121
!@#$@123
1asd
abab
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
root:x:0:0:root:/root:/bin/bash


tee命令

  • tee命令后面文件名,其作用类似于重定向>;但是它比重定向多一个显示在屏幕上的功能;
[root@linux-128 ~]# cat 3.txt >4.txt
[root@linux-128 ~]# cat 3.txt |tee 4.txt
abab
1asd
111
121

  1. tee –a 相当于追加重定向>>;它多了一个显示在屏幕上的功能
[root@linux-128 ~]# cat 3.txt |tee -a 4.txt
abab
1asd
111
121
[root@linux-128 ~]# cat 3.txt |tee -a 4.txt
abab
1asd
111
121
[root@linux-128 ~]# cat 4.txt
abab
1asd
111
121
abab
1asd
111
121
abab
1asd
111
121

命令tr

  • tr命令用于替换字符
[root@linux-128 ~]# cat 3.txt |tr ''a'' ''A''
AbAb
1Asd
111
121

[root@linux-128 ~]# cat 3.txt |tr ''[a-z]'' ''[A-Z]''
ABAB
1ASD
111
121

split命令

  • split 用于分割文档
  • split -l 按行来分割
  • split -b 按大小来分割
  1. split -b
[root@linux-128 ~]# mkdir test
[root@linux-128 ~]# cd test
[root@linux-128 test]# find /etc/ -type f -name "*.conf" -exec cat {} >1.txt \;
[root@linux-128 test]# du -sh 1.txt
252K	1.txt
[root@linux-128 test]# split -b 50k 1.txt
[root@linux-128 test]# ls
1.txt  xaa  xab  xac  xad  xae  xaf

  1. split –l
[root@linux-128 test]# wc -l 1.txt
6479 1.txt
[root@linux-128 test]# split -l 1000 1.txt
[root@linux-128 test]# ls
1.txt  xaa  xab  xac  xad  xae  xaf  xag

  • split 后面如果不指定文件名,则会以xaa,xab。。。这样的文件名来存取切割后的文件
  1. 指定目标分割文件名 为abc.
[root@linux-128 test]# split -l 1000 1.txt abc.
[root@linux-128 test]# ls
1.txt  abc.aa  abc.ab  abc.ac  abc.ad  abc.ae  abc.af  abc.ag

特殊符号

  • $ 变量前缀,!$组合,正则里面表示行尾
  • ;多条命令写到一行,用分号分割
  • ~ 用户家目录,后面正则表达式表示匹配符
  • & 放到命令后面,会把命令丢到后台
  • 重定向 > 追加重定向>> 错误重定向2> 错误追加重定向2>> 正确和错误重定向&>
  • [ ] 指定字符中的一个,[0-9],[a-zA-Z],[abc]
  • || 和 && ,用于命令之间

  • $:可以作为变量前面的标示符,可以和!结合起来使用,在正则里面表示行尾
[root@linux-128 test]# ls /root
11.txt      123     1.txt   2.txt        3.txt   anaconda-ks.cfg  d6z
11.txt.bak  1a.txt  +2      321.txt      4.txt   a.txt            test
12          1.log   23.txt  321.txt.bak  ab.txt  b.txt            工号.txt
[root@linux-128 test]# ls !$
ls /root
11.txt      123     1.txt   2.txt        3.txt   anaconda-ks.cfg  d6z
11.txt.bak  1a.txt  +2      321.txt      4.txt   a.txt            test
12          1.log   23.txt  321.txt.bak  ab.txt  b.txt            工号.txt

  • ; 多条命令写在一行,用;分割
[root@linux-128 ~]# cat 2.txt;cat 3.txt
111
111aaa
121
111
abab
1asd
abab
!@#$@123
111
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
abab
1asd
111
121

  • ~ 家目录,后面正则表示匹配符

  • 重定向(正确) > ,会覆盖以前的内容

[root@linux-128 ~]# echo "121212">3.txt
[root@linux-128 ~]# cat 3.txt
121212
  • 追加重定向(正确)>>
[root@linux-128 ~]# echo "ababab">>3.txt
[root@linux-128 ~]# cat 3.txt
121212
Ababab
  • 错误重定向 2>
[root@linux-128 ~]# cat 5.txt 2>6.txt
[root@linux-128 ~]# cat 6.txt
cat: 5.txt: 没有那个文件或目录

  • 错误追加重定向 2>>
[root@linux-128 ~]# cat 6.txt
cat: 5.txt: 没有那个文件或目录
cat: 5.txt: 没有那个文件或目录

  • &> 错误和正确都重定向到某个文件里面。
[root@linux-128 ~]# cat 3.txt 5.txt &> 6.txt
[root@linux-128 ~]# cat 6.txt
121212
ababab
cat: 5.txt: 没有那个文件或目录

  • shell中的链接符号 && || ;
  • && 前面命令执行成功后,才会执行后面的命令;如果前面执行不成功,后面命令不执行
  • || 前面的命令执行不成功,才会执行后面的命令;如果前面命令执行成功,后面命令不执行
  • ; 左边的命令成功与否,后边的命令都会执行

今天关于shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令shell 特殊符号的分享就到这里,希望大家有所收获,若想了解更多关于11.17 shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令,shell特殊符号、25.shell特殊符号cut命令 sort wc uniq tee tr split命令、5-5 8 特殊符号 cut sort wc uniq tee tr split、8.10 shell特殊符号cut, sort,wc,uniq, tee,tr,split命令等相关知识,可以在本站进行查询。

本文标签: