awk的功能很强大,但使用却很复杂,如果没有系统的去学习他的语法规则,则用起来不会那么得心应手。这里,并不是awk的完全手册,只是总结一下平时最常用的一些awk的使用:
1。 查找系统所有的用户
bash-3.00# awk -F: '{print $1}' /etc/passwd
root
daemon
bin
sys
adm
lp
uucp
nuucp
smmsp
listen
gdm
webservd
nobody
noaccess
nobody4
user
gk
tet
其中,-F:设定分隔符为:,'{print $1}'打印第一个字符段。
2. 将当前目录下所有以"#!/bin/sh"开头的文件改为"#!/bin/bash"
#!/bin/bash
cd /opt/SUNWstc-tetlite/XVS
find . | xargs grep -n '#!/bin/sh' | grep ':1' | awk -F: '{print $1}' > /tmp/0.0
for NAME in `cat /tmp/0.0 | sed 's//n/ /g'`
do
sed '1 s/sh/bash/g' $NAME > /tmp/1.1
mv /tmp/1.1 $NAME
done
rm /tmp/0.0
3. 将当前目录下所有文件中的"grep -q"改为"grep"
#!/bin/bash
cd /opt/SUNWstc-tetlite/XVS
find . | xargs grep 'grep -q' | awk -F: '{print $1}' > /tmp/0.0
for NAME in `cat /tmp/0.0 | sed 's//n/ /g'`
do
sed 's/grep -q/grep/g' $NAME > /tmp/1.1
mv /tmp/1.1 $NAME
done
rm /tmp/0.0
1。 查找系统所有的用户
bash-3.00# awk -F: '{print $1}' /etc/passwd
root
daemon
bin
sys
adm
lp
uucp
nuucp
smmsp
listen
gdm
webservd
nobody
noaccess
nobody4
user
gk
tet
其中,-F:设定分隔符为:,'{print $1}'打印第一个字符段。
2. 将当前目录下所有以"#!/bin/sh"开头的文件改为"#!/bin/bash"
#!/bin/bash
cd /opt/SUNWstc-tetlite/XVS
find . | xargs grep -n '#!/bin/sh' | grep ':1' | awk -F: '{print $1}' > /tmp/0.0
for NAME in `cat /tmp/0.0 | sed 's//n/ /g'`
do
sed '1 s/sh/bash/g' $NAME > /tmp/1.1
mv /tmp/1.1 $NAME
done
rm /tmp/0.0
3. 将当前目录下所有文件中的"grep -q"改为"grep"
#!/bin/bash
cd /opt/SUNWstc-tetlite/XVS
find . | xargs grep 'grep -q' | awk -F: '{print $1}' > /tmp/0.0
for NAME in `cat /tmp/0.0 | sed 's//n/ /g'`
do
sed 's/grep -q/grep/g' $NAME > /tmp/1.1
mv /tmp/1.1 $NAME
done
rm /tmp/0.0