三剑客练习题

1.在当前系统中打印出所有普通用户的用户名和家目录(/etc/passwd)

cat /etc/passwd |awk -F ":" '$3>999 {print $1,$(NF-1)}

2.显示当前系统中容量使用率大于5%的文件系统名称和挂载点

df -h|awk -F "[ %]+" 'NR>1&&$5>5 {print $1,$NF}'

3.为/tmp/grub.conf文件中前三行的行首加#号

sed -ri '1,3s/^/#/g' grub.conf

4.通过notepad++打开,把一下内容输入到test.txt文件中
姓名 区号 电话 三个月捐款数量
Mike Harrington:[510] 548-1278:250:100:175

Christian Dobbins:[408] 538-2358:155:90:201
Susan Dalsass:[206] 654-6279:250:60:50

Archie McNichol:[206] 548-1348:250:100:175
Jody Savage:[206] 548-1278:15:188:150

Guy Quigley:[916] 343-6410:250:100:175
Dan Savage:[406] 298-7744:450:300:275
Nancy McNeil:[206] 548-1278:250:80:75

John Goldenrod:[916] 348-4278:250:100:175

Chet Main:[510] 548-5258:50:95:135

Tom Savage:[408] 926-3456:250:168:200
Elizabeth Stachelin:[916] 440-1763:175:75:300

1)显示所有电话号码

awk -F "[ :]+"  'NR>1{print $4}' test.txt|egrep   -v '^$'
awk -F "[ :]+"  'NR>1{print $4}' test.txt不过滤空行

(2)显示Dan的电话号码

awk -F "[ :]+"  '$1~/Dan/''{print  $4}' test.txt

(3)显示Susan的名字和电话号码

awk -F "[ :]+"  '$1~/Susan/''{print  $1,$2,$4}' test.txt

(4)显示所有以D开头的姓

awk -F "[ :]+"  '{print  $2}' test.txt|awk '/D/'
awk -F "[ :]+"  '$2~/D/''{print  $2}' test.txt

(5)显示所有区号为916的人名

grep '916' test.txt |awk -F "[ :]"  '{print $1}'
awk -F "[ :]+"  '$3~/916/''{print  $2}' test.txt

(6)显示Mike的捐款.显示每个值时都有以$开头如$250$100$175

awk '/Mike/' test.txt|awk  '{print $5}' |sed -n 's#:#\$#gp'
sed -rn 's#^M.*:(.*):(.*):(.*).*#$\1$\2$\3#gp' test.txt 
 awk -F "[: ]+" '$1~/Mike/{print "$"$(NF-2),"$"$(NF-1),"$"$NF}' test.txt

(7)显示姓,其后跟一个逗号和名

awk -F "[ :]"  'NR>1{print  $2,$1}' test.txt |sed -nr "s#([a-z]+) ([a-Z]+)#\1,\2#gp"
sed -rn 's#([a-Z]+) ([a-Z]+).*#\2,\1#gp' test.txt
awk -F "[ :]+" 'NR>1&&$1~/[a-z]/{print $2","$1}' test.txt 

(8)在Jody开头的行前面添加oldboy

 sed -rn '14s#^#oldboy#gp' test.txt
sed -rn 's#(^Jody.*)#oldboy\1#gp' test.txt 

(9)删除空白行

 sed -rni '/^$/d' test.txt 

你可能感兴趣的:(三剑客练习题)