您的位置:首页 > 运维架构 > Linux

find、sed、awk、grep命令总结

2017-04-10 20:33 573 查看
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:与正则表达式相结合,仅显示出匹配的内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux