您的位置:首页 > 其它

grep 、sed、awk的一些应用

2011-11-21 21:59 309 查看
目录: 1、不显示文件中的空行 2、删除文件的1到5行 3、删除文件注释行 4、打印匹配行 5、显示从字符1到字符2的中间行 6、匹配特别表达式 7、替代文本

1、不显示文件中的空行

[guo@guo ~]$ cat rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

[guo@guo ~]$ grep -v '^$' rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

[guo@guo ~]$ sed -e '/^$/d' rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

[guo@guo ~]$ awk '!/^$/{print $0 }' rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

2、删除文件的1到5行

[guo@guo ~]$ cat test

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

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

[guo@guo ~]$ sed -e '1,5d' test

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

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

[guo@guo ~]$ awk '{if(NR>5 ) print $0} ' test

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

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

3、删除文件注释行

[guo@guo ~]$ sed -e "/^#/d" rc.local

touch /var/lock/subsys/local

[guo@guo ~]$ awk '!/^#/{print $0}' rc.local

touch /var/lock/subsys/local

[guo@guo ~]$ grep -v '^#' rc.local

touch /var/lock/subsys/local

4、打印匹配行

[guo@guo ~]$ grep '^#' rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

[guo@guo ~]$ sed -n -e '/^#/p' rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

[guo@guo ~]$ awk ' /^#/ { print $0 }' rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

5、显示从字符1到字符2的中间行

[guo@guo ~]$ cat test1

good

hello

hi shell

sorry

goodbye c

[guo@guo ~]$ sed -n -e '/hello/,/sorry/p' test1

hello

hi shell

sorry

[guo@guo ~]$ awk '/hello/,/sorry/ {print $0 }' test1

hello

hi shell

sorry

6、匹配特别表达式

[guo@guo ~]$ cat for.c

#include<stdio.h>

main()

{

printf("Hello Shell");

}

[guo@guo ~]$ sed -n -e '/main[[:space:]]*(/,/^}/p' for.c

main()

{

printf("Hello Shell");

}

7、替代文本

[guo@guo ~]$ cat test |tr 'root' 'good'

good:x:0:0:good:/good:/bin/bash

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

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

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

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

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

shuddown:x:6:0:shuddown:/sbin:/sbin/shuddown

hald:x:7:0:hald:/sbin:/sbin/hald

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

uucp:x:10:14:uucp:/vag/spool/uucp:/sbin/nologin

[guo@guo ~]$ cat test |tr 'root' 'god'

gddd:x:0:0:gddd:/gddd:/bin/bash

bin:x:1:1:bin:/bin:/sbin/ndldgin

daemdn:x:2:2:daemdn:/sbin:/sbin/ndldgin

adm:x:3:4:adm:/vag/adm:/sbin/ndldgin

lp:x:4:7:lp:/vag/spddl/lpd:/sbin/ndldgin

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

shudddwn:x:6:0:shudddwn:/sbin:/sbin/shudddwn

hald:x:7:0:hald:/sbin:/sbin/hald

mail:x:8:12:mail:/vag/spddl/mail:/sbin/ndldgin

uucp:x:10:14:uucp:/vag/spddl/uucp:/sbin/ndldgin

[guo@guo ~]$ sed 's/root/good/p' test

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

good: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

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

[guo@guo ~]$ sed 's/root/god/p' test

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

god: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

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

[guo@guo ~]$ awk '{gsub(/root/,"good");print $0}' test

good:x:0:0:good:/good:/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

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

[guo@guo ~]$ awk '{gsub(/root/,"god");print $0}' test

god:x:0:0:god:/god:/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

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

通过对比可知tr的替换两个字串必须等长度,而sed不能把说有的root替换

[guo@guo ~]$ sed 's/root/good/g' test

good:x:0:0:good:/good:/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

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

通过参数g实现把每个root都替换
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: