10月15日任务

8.10 shell特殊符号   cut命令

* 任意个任意字符 (通配符)

? 任意一个字符 

# 注释字符 (配置文件或者命令前面,shell脚本,注释或者不生效)

\ 脱义字符  

| 管道符

cut 分割,-d 分隔符  -f 指定段号   -c 指定第几个字符  (截取字符串)

[root@test ~]# a=1

[root@test ~]# b=2

[root@test ~]# c=$a$b

[root@test ~]# echo $c

12

[root@test ~]# c='$a$b'

[root@test ~]# echo $c

$a$b

[root@test ~]# c=\$a\$b   (脱义)

[root@test ~]# echo $c

$a$b

 

[root@test ~]# cat passwd |head -2

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

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

[root@test ~]# cat passwd |head -2 |cut -d ":" -f 1,2

root:x

bin:x

[root@test ~]# cat passwd |head -2 |cut -d ":" -f 1-4

root:x:0:0

bin:x:1:1

[root@test ~]# cat passwd |head -2 |cut -c 4

t

:

8.11 sort_wc_uniq命令

sort 排序, -n 以数字排序 -r 反序  -t 分隔符(按照第几段排序) -kn1/-kn1,n2   (一列数字或者字符排序,sort一般和uniq联合使用,默认按照ASCII码排序(数字和字母有ID号)

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

uniq 去重, -c统计行数

 

[root@test ~]# cat passwd |head -6 |sort

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

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

 

[root@test ~]# cat passwd |sort   (ASCII码排序,前面相同的内容,就会看后一个的大小,以此类推下去

 

<

>

?

]

{

22221111  

22233333333

222aaaaaaaaa

32131231

321321432.txt

342432423432dsfsdfsdfsd

432432.txt

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

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

chrony:x:997:995::/var/lib/chrony:/sbin/nologin

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

dhaskdhkashdkasaaaa22222222222

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

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

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

$sdfdsfd

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

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

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

 

-n以数字排序,特殊符号和字母视为0

[root@test ~]# sort -n passwd

 

<

>

?

]

{

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

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

chrony:x:997:995::/var/lib/chrony:/sbin/nologin

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

dhaskdhkashdkasaaaa22222222222

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

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

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

$sdfdsfd

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

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

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

222aaaaaaaaa

432432.txt

22221111

32131231

321321432.txt

22233333333

342432423432dsfsdfsdfsd

 

-r反序排序

[root@test ~]# sort -nr passwd

342432423432dsfsdfsdfsd

22233333333

321321432.txt

32131231

22221111

432432.txt

222aaaaaaaaa

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

$sdfdsfd

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

postfix:x:89:89::/var/spool/postfix:/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

dhaskdhkashdkasaaaa22222222222

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

chrony:x:997:995::/var/lib/chrony:/sbin/nologin

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

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

{

]

?

>

<

 

统计字符数

[root@test ~]# wc -m passwd

648 passwd

648个字符中有$表示换行符也算入

[root@test ~]# cat -A passwd

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$

postfix:x:89:89::/var/spool/postfix:/sbin/nologin$

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin$

chrony:x:997:995::/var/lib/chrony:/sbin/nologin$

dhaskdhkashdkasaaaa22222222222$

342432423432dsfsdfsdfsd$

432432.txt$

321321432.txt$

$sdfdsfd$

32131231$

22233333333$

22221111$

222aaaaaaaaa$

<$

>$

{$

?$

]$

$

 

统计词 (空格或者空白字符区分,符号还是会认为一整个词)

[root@test ~]# wc -w passwd

27 passwd

 

去重 (排序后再去重比较好)

[root@test ~]# cat 5.txt;uniq 5.txt  (不排序直接去重,隔开的就不会去重

123

abc dsadsa sdsadas

123

abc

abc

abc

123

123

123

dsahkdhas

dhksahdkas

 

 

123

abc dsadsa sdsadas

123

abc

123

dsahkdhas

dhksahdkas

 

[root@test ~]# sort 5.txt |uniq

 

123

abc

abc dsadsa sdsadas

dhksahdkas

dsahkdhas

 

查看去重次数

[root@test ~]# sort 5.txt |uniq -c

      2

      5 123

      3 abc

      1 abc dsadsa sdsadas

      1 dhksahdkas

      1 dsahkdhas

 

 

8.12 tee_tr_split命令

tee 比 > 就多了一个立即显示重定向内容的好处

 

tee 和>类似,重定向的同时还在屏幕显示 -a追加

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

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

 

>将内容重定向至一个文件但是不会把结果告诉用户

[root@test ~]# sort 5.txt |uniq -c >a.txt ;cat a.txt

      2

      5 123

      3 abc

      1 abc dsadsa sdsadas

      1 dhksahdkas

      1 dsahkdhas

tee重定向的同时还在屏幕显示 

[root@test ~]# sort 5.txt |uniq -c |tee a.txt

      2

      5 123

      3 abc

      1 abc dsadsa sdsadas

      1 dhksahdkas

      1 dsahkdhas

 

-a追加

[root@test ~]# sort 5.txt |uniq -c |tee -a a.txt

      2

      5 123

      3 abc

      1 abc dsadsa sdsadas

      1 dhksahdkas

      1 dsahkdhas

[root@test ~]# cat a.txt

      2

      5 123

      3 abc

      1 abc dsadsa sdsadas

      1 dhksahdkas

      1 dsahkdhas

      2

      5 123

      3 abc

      1 abc dsadsa sdsadas

      1 dhksahdkas

      1 dsahkdhas

 

 

清空文件命令>

[root@test ~]# >a.txt

 

tr替换字符

[root@test ~]# echo "skahdkhk" | tr '[ad]' '[AD]'

skAhDkhk

[root@test ~]# echo "skahdkhk" | tr '[a-z]' '[A-Z]'

SKAHDKHK

 

 

切割文件(切割日志)

根据文件大小切割

[root@test ~]# split -b 100M bigfile

根据行切割

[root@test ~]# split -l 1000 bigfile

 

[root@test ~]# find /etc/ -type f -name "*conf" -exec cat {} >>a.txt \;  将/etc/下所有的配置文件追加到a.txt

切割

[root@test 2]# du -sh a.txt

960K    a.txt

 

[root@test 2]# split -b 1k a.txt

a129d43fe62d201df59d63f3082c437b73d.jpg

 

指定切割的文件名

[root@test 2]# split -b 100k a.txt abc

[root@test 2]# ls

abcaa  abcab  abcac  abcad  abcae  abcaf  abcag  a.txt

 

指定行切割

[root@test 2]# split -l 1000 a.txt abc

[root@test 2]# ls

abcaa  abcac  abcae  abcag  abcai  abcak  abcam  abcao  abcaq  a.txt

abcab  abcad  abcaf  abcah  abcaj  abcal  abcan  abcap  abcar

[root@test 2]# wc -l abc*

  1000 abcaa

  1000 abcab

  1000 abcac

  1000 abcad

  1000 abcae

  1000 abcaf

  1000 abcag

  1000 abcah

  1000 abcai

  1000 abcaj

  1000 abcak

  1000 abcal

  1000 abcam

  1000 abcan

  1000 abcao

  1000 abcap

  1000 abcaq

   634 abcar

17634 总用量

 

 

8.13 shell特殊符号下

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

;多条命令写到一行,用分号分割 

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

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

>(正确重定向,把之前的文件内容清空)    >>(正确追加重定向,文件最后追加)     2>(错误重定向)     2>>(错误追加重定向)     &>(正确错误输出重定向) 

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

||(或者的意思) 和 && ,用于命令之间

 

[root@test 2]# for i in `seq 1 10`

> do

> echo $i

> done

1

2

3

4

5

6

7

8

9

10

[root@test 2]# for i in `seq 1 10`; do echo $i; done

 

||或者的意思,第一条命令执行不成功则执行第二条命令,第一条命令执行成功则不执行第二条命令

[root@test 2]# ls la.txt || wc -l a.txt

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

17634 a.txt

[root@test 2]# wc -l a.txt || ls sadas.txt

17634 a.txt

 

&&    第一条命令执行成功则会执行第二条命令,第一条命令执行不成功则不执行第二条命令

[root@test 2]# wc -l a.txt && ls sadas.txt

17634 a.txt

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

[root@test 2]# ls la.txt && wc -l a.txt

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

 

 

 

 

实战:

创建一个目录,存在则不创建,不存在则创建

[root@test 2]# ls ys || mkdir ys

ls: 无法访问ys: 没有那个文件或目录

 

或者:[ -d  ]来判断是否是目录,是否存在

[root@test 2]# [ -d yss ] || mkdir yss

判断是否是文件是否存在[ -f ]

[root@test 2]# [ -f 1.txt ] || touch 1.txt

 

转载于:https://my.oschina.net/u/3803396/blog/2245869


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部