第十课预习内容

8.10 shell特殊符号cut命令
8.11 sort_wc_uniq命令
8.12 tee_tr_split命令
8.13 shell特殊符号下

1.linux中特殊符号非常重要,这些基础知识在我们后面写shell脚本的时候非常重要,都是基本。

2.shell特殊符号cut命令

2.1 cut命令的用法:

cut -d '分隔字符' [-cf] n //n表示数字
-d 后面跟分隔字符,分隔字符要用单引号括起来
-c 后面接的是第几个字符
-f 后面接的是第几个区块

2.2下面看一下几个用法:

[root@localhost /]# cat 1.txt | cut -d ":" -f 1
root
bin
daemon
adm
lp
sync
shutdown

下面看一下-c选项,n可以是1个数字,还可以是一个区间,还可以是多个数字。

[root@localhost /]# cat 1.txt |cut -c [1-3]
3
4
4
[root@localhost /]# cat 1.txt |cut -c 1,3,4
rot
bn:
dem
am:
l:x
snc
sut
hlt

3.sort_wc_uniq命令

3.1 sort命令用来的排序,其格式为:

sort [-t 分隔符][-kn1,n2][-nru] //n1和n2指的是数字,
-t:后面跟分隔字符,作用跟cut的-d选项一样
-n:表示使用纯数字排序
-r:表示反向排序
-u:表示去重复
-kn1,n2:表示由n1区间排序到n2区间,可能只写-kn1,即对n1字段排序

sort不加任何选项,则从首字符向后依次按ASCII码值进行比较,最后将它们按升序输出。

3.2 下面看一下各个选项的用法:

[root@localhost /]# cat 1.txt |sort //没有加任何选项
adm:x:3:4:adm:/var/adm:/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

[root@localhost /]# cat 1.txt |sort -k3
adm:x:3:4:adm:/var/adm:/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
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


[root@localhost /]# cat 1.txt |sort -r
user1:x:1001:1001::/home/user1:/bin/bash
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
root:x:0:0:root:/root:/bin/bash

3.3 wc命令

3.3.1 wc命令的用法:

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

wc不跟任何选项,直接跟文档,则会把行数、词数和字符数依次输出

3.3.2 下面看一下具体用法:

[root@localhost /]# wc 1.txt
 21  29 936 1.txt
[root@localhost /]# wc -l 1.txt
21 1.txt
[root@localhost /]# wc -m 1.txt
936 1.txt
[root@localhost /]# wc - w 1.txt

3.4 uniq 

3.4.1 uniq命令的用法:

uniq 用来删除重复的行,该命令只有-c选项,它表示统计重复的行数,并把行数写在前面。

3.4.2 uniq的实例:

[root@localhost /]# uniq -c 1.txt
      1 root:x:0:0:root:/root:/bin/bash
      1 bin:x:1:1:bin:/bin:/sbin/nologin
      1 daemon:x:2:2:daemon:/sbin:/sbin/nologin
      1 adm:x:3:4:adm:/var/adm:/sbin/nologin
      1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
      1 sync:x:5:0:sync:/sbin:/bin/sync
      1 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
      1 halt:x:7:0:halt:/sbin:/sbin/halt
      1 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
      1 operator:x:11:0:operator:/root:/sbin/nologin
      1 games:x:12:100:games:/usr/games:/sbin/nologin
      1 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
      1 nobody:x:99:99:Nobody:/:/sbin/nologin
      1 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
      1 dbus:x:81:81:System message bus:/:/sbin/nologin
      1 polkitd:x:999:998:User for polkitd:/:/sbin/nologin
      1 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
      1 postfix:x:89:89::/var/spool/postfix:/sbin/nologin
      1 chrony:x:998:996::/var/lib/chrony:/sbin/nologin
      1 knightlai:x:1000:1000::/home/knightlai:/bin/bash
      1 user1:x:1001:1001::/home/user1:/bin/bash

4. tee_tr_split命令

4.1 tee命令

4.1.1 tee命令的用法:

tee命令后面跟文件名,作用类似于重定向>,但它比重定向多一个功能,即把文件写入后面所跟的文件时,还显示在屏幕上。

4.1.2 tee的实例:

[root@localhost /]# echo "11111122" | tee 2.txt
11111122

4.2 tr命令

4.2.1 tr命令的用法:

tr命令用于替换字符,常用来处理文档中出现的特殊符号,tr常用的选项有两个:
-d:表示删除某个字符,后面跟要删除的字符
-s:表示删除重复的字符

4.2.2 tr的实例:

[root@localhost /]# head -n3 1.txt |tr '[a-z]' '[]A-Z]' //将小写字母替换成大写字母
QNNS:W:0:0:QNNS:/QNNS:/AHM/A]RG
AHM:W:1:1:AHM:/AHM:/RAHM/MNKNFHM
C]DLNM:W:2:2:C]DLNM:/RAHM:/RAHM/MNKNFHM


[root@localhost /]# head -n1 1.txt | tr 'a' 'A' //将小写a换成大写A
root:x:0:0:root:/root:/bin/bAsh

4.3 split 命令

4.3.1 split命令的用法:

split命令用于切割文档,常用的选项为
-b:表示依据大小来分割文档,单位为byte
-l:表示依据行数来分割文档

4.3.2 split实例:

[root@localhost /]# split -b 200 1.txt //分割成5段它会以 xaa xab xac分割
[root@localhost /]# ls
1.txt  2  2.txt   xaa  xab  xac  xad  xae

[root@localhost /]# split -l 10  1.txt //依据行数来分割文档
[root@localhost /]# ls
1.txt  2  2.txt  3  bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  testdir  tmp  usr  var  xaa  xab  xac  xad  xae
[root@localhost /]# wc -l *
 0 var
     10 xaa
     10 xab
      1 xac
      4 xad
      3 xae
     56 total

5. shell特殊符号

5.1 特殊符号$:符号$可以用作变量前面的标识符,还可以和!结合起来使用

[root@localhost /]# ls 1.txt
1.txt
[root@localhost /]# ls !$
ls 1.txt
1.txt

5.2 特殊符号“;” 如果需要在一行中输入一行中运行两个或两个以上的命令,需要在命令之间加符号;

[root@localhost /]# ls 1.txt;cat 1.txt
1.txt
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nolog

5.3 特殊符号~:表示用户的家目录,root用户的家目录就是/root,普通用户则是/home/username

[root@localhost /]# cd ~
[root@localhost ~]# pwd
/root
[root@localhost ~]# su - knightlai
Last login: Thu Jul 19 02:35:42 EDT 2018 on pts/1
[knightlai@localhost ~]$ cd ~
[knightlai@localhost ~]$ pwd
/home/knightlai

5.4 特殊符号&:如果想把一条命令放到后台执行,则需要加上这个符号

[knightlai@localhost ~]$ ls 1.txt&
[1] 92898
[knightlai@localhost ~]$ ls: cannot access 1.txt: No such file or directory

猜你喜欢

转载自blog.csdn.net/a1779078902/article/details/81699377