find:*****

查找某个文件夹下的文件:

[root@wuyike ~]# find /root/data -type f

/root/data/c/test.txt

/root/data/a/ddd/fff/test.txt

/root/data/a/test.txt

/root/data/t.txt

/root/data/192.168.60.134-2017-03-10.txt


[root@wuyike ~]# find /root/data -type f -name "*.txt"

/root/data/c/test.txt

/root/data/a/ddd/fff/test.txt

/root/data/a/test.txt

/root/data/t.txt

/root/data/192.168.60.134-2017-03-10.txt

同时查找两种类型的数据:(f:文件  d:目录)

[root@wuyike ~]# find /root/ -type f -o -type d -name "wuyike"

/root/.bash_logout

/root/data/c/test.txt

/root/data/wuyike

/root/data/a/ddd/fff/test.txt

/root/data/a/test.txt

/root/data/t.txt

/root/data/192.168.60.134-2017-03-10.txt

/root/.cshrc

/root/.bashrc

/root/.tcshrc


!取反

[root@wuyike ~]#  find /root/data/ ! -type f    表示找出路径下不是文件的数据

/root/data/

/root/data/c

/root/data/wuyike

/root/data/a

/root/data/a/ddd

/root/data/a/ddd/fff

/root/data/b




sed:*****

[root@wuyike ~]# echo "ddd fff

> 2ddd fff

> 3ddd fff" >wuyike.txt

[root@wuyike ~]# cat wuyike.txt

ddd fff

2ddd fff

3ddd fff

[root@wuyike ~]# sed -n '2p' wuyike.txt

2ddd fff

[root@wuyike ~]# sed -n '1,2p' wuyike.txt

ddd fff

2ddd fff

[root@wuyike ~]# sed -n '1,3p' wuyike.txt

ddd fff

2ddd fff

3ddd fff

[root@wuyike ~]# sed "s#ddd#wuyike#g" wuyike.txt

wuyike fff

2wuyike fff

3wuyike fff

[root@wuyike ~]# cat wuyike.txt

ddd fff

2ddd fff

3ddd fff

[root@wuyike ~]# sed -i "s#ddd#wuyike#g" wuyike.txt

[root@wuyike ~]# cat wuyike.txt                    

wuyike fff

2wuyike fff

3wuyike fff

[root@wuyike ~]# sed -r 's#(可以用正则表达式匹配)#\1#g' wuyike.txt

-r的作用:一些特殊字符,如(),不用再用\来转义了

-i表示修改文件中的内容,不加-i只是输出s###g中替换的内容

正则表达式:

.代表单个任意字符

*重复前面0个或多个字符

.*表示匹配任意字符


[root@wuyike ~]# sed -r 's#(.*) fff#\1#g' wuyike.txt 

wuyike

2wuyike

3wuyike

[root@wuyike ~]# sed -r 's#(.*)fff#\1#g' wuyike.txt 

wuyike 

2wuyike 

3wuyike 

[root@wuyike ~]# sed -r 's#(.*)ff#\1#g' wuyike.txt 

wuyike f

2wuyike f

3wuyike f

把前面正则表达式匹配的括号内的结果,在后面用\1表示并拿来用:

[root@wuyike ~]# echo "ddd fff

> > 2ddd fff

> > 3ddd fff" >wuyike.txt

[root@wuyike ~]# cat wuyike.txt

ddd fff

> 2ddd fff

> 3ddd fff

[root@wuyike ~]# sed -r 's#(.*) (.*)#\1 \2#g' wuyike.txt

ddd fff

> 2ddd fff

> 3ddd fff

[root@wuyike ~]# sed -r 's#(.*) (.*)#\2 \1#g' wuyike.txt    不懂!

fff ddd

fff > 2ddd

fff > 3ddd



awk:******

[root@wuyike ~]# cat wuyike.txt

ddd fff

> 2ddd fff

> 3ddd fff

[root@wuyike ~]# awk '{print $1}' wuyike.txt

ddd

>

>

[root@wuyike ~]# awk '{print $1 " " $2}' wuyike.txt

ddd fff

> 2ddd

> 3ddd

[root@wuyike ~]# awk '{print $1" "$NF}' wuyike.txt 

ddd fff

> fff

> fff

[root@wuyike ~]# awk -F "/" '{print $1" "$NF}' /etc/passwd

root:x:0:0:root: bash

bin:x:1:1:bin: nologin

daemon:x:2:2:daemon: nologin

adm:x:3:4:adm: nologin

lp:x:4:7:lp: nologin

sync:x:5:0:sync: sync

………………略

$NF表示最后一列

-F表示以某分隔符作为分割

[root@wuyike ~]# awk '{if(NR>20&&NR<26) print $0}' /etc/passwd

saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin

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

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

tcpdump:x:72:72::/:/sbin/nologin

keke:x:500:500::/home/keke:/bin/bash

$0表示整行

$NR表示行



grep:*****

[root@wuyike ~]# grep "fff" wuyike.txt

ddd fff

> 2ddd fff

> 3ddd fff

表示列出所有匹配到的行

[root@wuyike ~]# grep -o "fff" wuyike.txt 

fff

fff

fff

-o表示只想要匹配到的结果,而不是默认的整行

[root@wuyike ~]# grep -i "FFF" wuyike.txt 

ddd fff

> 2ddd fff

> 3ddd fff

-i表示不区分大小写

[root@wuyike ~]# grep -v "FFF" wuyike.txt 

ddd fff

> 2ddd fff

> 3ddd fff

-i表示不区分大小写

[root@wuyike ~]# grep -v "fff" wuyike.txt

-v表示排除匹配到的行,由于每行都有"fff",所以无输出

[root@wuyike ~]# grep -E "3306|1521" /etc/services 

mysql           3306/tcp                        # MySQL

mysql           3306/udp                        # MySQL

ncube-lm        1521/tcp                # nCube License Manager

ncube-lm        1521/udp                # nCube License Manager

-E表示匹配多个字符串,并列出所有匹配的行

[root@wuyike ~]# grep "1521" -A 5 /etc/services 

ncube-lm        1521/tcp                # nCube License Manager

ncube-lm        1521/udp                # nCube License Manager

ricardo-lm      1522/tcp                # Ricardo North America License Manager

ricardo-lm      1522/udp                # Ricardo North America License Manager

cichild-lm      1523/tcp                # cichild

cichild-lm      1523/udp                # cichild

pdap-np         1526/tcp                # Prospero Data Access Prot non-priv

-A:后5行

-B:前5行

-C:前后5行

-n:在行首显示行号

-o:与正则表达式相结合,仅显示出匹配的内容