正则表达式练习题-姜春龙-CSDN博客
正则表达式练习题 收藏
正则表达式及字符处理
在任务下面的横线上写下您的解决方案,您写出您的命令而不是命令的输出,答案在实验最后,但是要先试着自己解决,可以使用man page来帮助您解决问题。
任务::
1.使用grep显示出/usr/share/dict/words文件中含有某参数的行,例如显示出所有含有fish的行:
[~]# grep fish /usr/share/dict/words  --color
2.使用grep的man page作为帮助,输出任何包含fish的所有行,还要输出紧接着这行的上下各两行的内容:
[~]# grep -n -2 fish /usr/share/dict/words  --color
[~]# grep -n -A 2 -B 2 fish /usr/share/dict/words  --color
3.使用grep的man page作为帮助,出相应的命令,来显示出在words文件中有多少行含有fish。
[~]# grep  fish /usr/share/dict/words  --color | wc -l
805
[~]# grep -c fish /usr/share/dict/words  --color
805
[~]#
4.使用grep的帮助文件,出相应的命令,显示出那些行含有fish,并将行号一块输出,看一看starfish在哪行?
[~]# grep -n starfish /usr/share/dict/words  --color
390384:starfish
390385:starfishes
[~]#
5.想列出/usr/share/dict/words中包含先有字母t然后有一个元音字母,之后是sh的单词,命令为:
[~]# grep -w 't[aeiou]sh' /usr/share/dict/words  --color
tash
tosh
tosh-up
tush
[~]# grep  '\<t[aeiou]sh\>' /usr/share/dict/words  --color
tash
tosh
tosh-up
tush
[~]#
在常用的正则化计算方法中 属于6.在/usr/share/dict/words文件中,创建可以符合
abominable
abominate
anomie
atomize
a(b|n|t)omi(na(bl|t)|z)?e
的正则表达式,但是不要选到别的单词。
[~]# grep -wE 'a(b|n|t)omi(na(bl|t)|z)?e' /usr/share/dict/words  --color
abominable
abominate
anomie
atomize
[~]#
[~]# grep -wE 'abomina(bl|t)e|a(n|t)omiz?e' /usr/share/dict/words  --color
abominable
abominate
anomie
atomize
[~]#
7.在/usr/share/dict/words文件中包含多少先有字母t然后有一个元音字母,之后是sh的单词,只输出数量。
[~]# grep -cE 't[aeiou]sh' /usr/share/dict/words  --color 418
[~]# grep  't[aeiou]sh' /usr/share/dict/words  --color | wc -l
8.列出/usr/share/dict/words中刚好包含16个字母的单词:
[~]# grep -cE '^[a-Z]{16}$' /usr/share/dict/words  --color
5330
[~]#
9.我们将要使用/usr/share/doc文件夹来完成我们的下几个任务。
列出/usr/share/doc/bash-* 文件夹中,所有包含单词expansion的文件,
[~]# grep -rl 'expansion' /usr/share/doc/bash-3.2/ | wc -l
22
[~]# for i in $(find /usr/share/doc/bash-3.2/ -type f) ;do grep -l 'expansion' $i ;done | wc -l
22
[~]#
10.显示出“Linux”在/usr/share/doc/bash-* 文件夹的文件中出现的次数,但是不要显示没有这个单词的文件。提示:先列出所有的文件,然后想如何使输出符合要求:
[~]# cat my.sh
#!/bin/bash
for i in $(find /usr/share/doc/bash-3.2/ -type f )
do
if grep -lw Linux $i
then
sed -r 's/[^a-Z]+/\n/g' $i | grep -cw Linux
fi
done
[~]# find /usr/share/doc/bash-3.2/ -type f |xargs -i bash -c "grep -lw Linux {} && sed -r 's/[^a-Z]+/\n/g' {} | grep -cw Linux"
[~]# find /usr/share/doc/bash-3.2/ -type f -exec bash -c  "grep -lw Linux {} && sed -r 's/[^a-Z]+/\n/g' {} | grep -cw Linux" \;
[~]#
[~]# find /usr/share/doc/bash-3.2/ -type f |xargs -i bash -c "grep -lw Linux {} && grep -ow Linux {} | wc -l"
11. 统计系统中每种shell的使用人数
[~]# awk -F: '{print $NF}' /etc/passwd | sort | uniq -c
1
5 /bin/bash
1 /bin/sync
1 /sbin/halt
32 /sbin/nologin
1 /sbin/shutdown
[~]# awk -F: '{ary[$NF]++}END{for(i in ary)print ary[i],i}' /etc/passwd
1
1 /bin/sync
5 /bin/bash
32 /sbin/nologin
1 /sbin/halt
1 /sbin/shutdown
[~]#

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。