Linux 第四次练习(文本处理工具)

正则表达式练习

1、显示/proc/meminfo文件中以大小s开头的行(要求:使用两种方法)
cat /proc/meminfo | grep -i ^s
cat /proc/meminfo | grep -iv ^[^s]

2、显示/etc/passwd文件中不以/bin/bash结尾的行

grep -v /bin/bash$ /etc/passwd

3、显示用户rpc默认的shell程序

grep ^rpc /etc/passwd | cut -d: -f7

4、找出/etc/passwd中的两位或三位数

grep "\<[0-9]\{2,3\}\>" /etc/passwd

5、显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面有非空白字符的行

grep "^[ ]\+[^ ]" /etc/grub2.cfg

6、找出“netstat -tan”命令结果中以LISTEN后跟任意多个空白字符结尾的行

netstat -tan | grep "LISTEN[ ]\+"

7、显示CentOS7上所有UID小于1000以内的用户名和UID.

grep "\<[0-9]\{1,3\}\>" /etc/passwd | cut -d: -f1,3

8、添加用户bash、testbash、basher、sh、nologin(其shell为/sbin/nologin),找出/etc/passwd用户名和shell同名的行

for user in bash testbash basher sh nologin;do useradd $user -s /sbin/nologin;done
grep "^\([a-z]*\>\).*\1$" /etc/passwd

9、利用df和grep,取出磁盘各分区利用率,并从大到小排序

df | grep ^/dev | tr -s " " % | cut -d"%" -f5 | sort -nr

 

扩展正则表达式练习

10、显示三个用户root、mage、wang的UID和默认shell

egrep "^(root|mage|wang)" /etc/passwd | cut -d: -f3,7

12、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行

egrep "^[a-z|_]+\>\(\).*" /etc/rc.d/init.d/functions

13、使用egrep取出/etc/rc.d/init.d/functions中其基名

echo /etc/rc.d/init.d/functions | egrep -o [^/]+$

14、使用egrep取出上面路径的目录名

echo /etc/rc.d/init.d/functions | egrep -o "^.*/"

15、统计last命令中以root登录的每个主机IP地址登录次数

last | egrep ^root.*[0-9.]{3}[0-9] | tr -s " " | cut -d" " -f 3 | sort -n | uniq -c

16、利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255

for i in {0..255};do echo $i >> 0-255.txt ;done
egrep "\<[0-9]\>" 0-255.txt
egrep "\<[1-9][0-9]\>" 0-255.txt
egrep "\<[1][0-9][0-9]\>" 0-255.txt
egrep "\<[2][0-4][0-9]\>" 0-255.txt
egrep "\<[2][5][0-5]\>" 0-255.txt

17、显示ifconfig命令结果中所有IPv4地址

ifconfig | egrep -o "\<[0-9]+\>.\<[0-9]+\>.\<[0-9]+\>.\<[0-9]+\>"

18、将此字符串:welcometomagedulinux中的每个字符去重并排序,重复次数多的排到前面

echo welcometomagedulinux | egrep -o [a-z] | sort | uniq -c | sort -nr

 

sed练习

19、删除centos7系统/etc/grub2.cfg文件中所有以空白开头的行行首的空白字符

sed -ri.bak '/^ /s@[ ]+(.*)@\1@' /etc/grub2.cfg

20、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

sed -ri.bak '/^#[ ]/s@^#[ ](.*)@\1@' /etc/fstab

21、在centos6系统/root/install.log每一行行首增加#号

sed -ri.bak 's@(.*)@#\1@' install.log

22、在/etc/fstab文件中不以#开头的行的行首增加#号

sed -ri.bak '/^[^#]/s@(.*)@#\1@p' /etc/fstab

23、处理/etc/fstab路径,使用sed命令取出其目录名和基名

echo /etc/fstab | sed -rn 's@.*/([a-z]+)$@\1@p'

24、利用sed 取出ifconfig命令中本机的IPv4地址

sed -nr '/^ID=/s@.*="?([a-z]+)"?@\1@p' /etc/os-release

25、统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个字段的重复次数

26、统计/etc/init.d/functions文件中每个单词的出现次数,并排序(用grep和sed两种方法分别实现)

egrep -o "\<[a-z]+\>" /etc/init.d/functions | sort | uniq -c | sort -nr
sed -r 's@[^[:alpha:]]+@\n@g' /etc/init.d/functions | sort | uniq -c | sort -nr

27、将文本文件的n和n+1行合并为一行,n为奇数行

上一篇:Linux系统安全


下一篇:CTF解题记录-Misc-图片隐写术(附靶场链接)