目录
1、显示/proc/meminfo文件中以不区分大小的s开头的行;
3、显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意字符的行;
4、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行;
5、显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行;
6、显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行;
8、显示/etc/sysconfig/network-scripts/ifcfg-eth0文件中的包含了类似IP地址点分十进制数字格式的行;
1、在text.txt文件中匹配regex的行之后插入一空行?
2、sed将文件test中第50行中的haiwao改为haiwai?
3、替换一个文件/etc/passwd里的这root:x:0:0:root:/root:/bin/bash一行第二个root为test?
5、⽇志⽂件a.log,内容是时间顺序递增,从0点到23点的所有⽇志记录,每条时间的⽇志为⼀⾏:
6.123abc456 456def123 567abc789 789def567
要求输出: 456ABC123 123DEF456 789ABC567 567DEF789
grep
grep(全局正则表达式版本)允许对文本文件进行模式查找。如果找到匹配模式,grep打印包含模式的所有行。grep支持基本正则表达式,也支持其扩展集。
常用的grep选项有:
-c 只输出匹配行的计数。
-i 不区分大小写(只适用于单字符)。
-h 查询多文件时不显示文件名。
-l 查询多文件时只输出包含匹配字符的文件名。
-n 显示匹配行及行号。
-s 不显示不存在或无匹配文本的错误信息。
-v 显示不包含匹配文本的所有行。(反向过滤)
常见面试题
1、显示/proc/meminfo文件中以不区分大小的s开头的行;
grep -i ^s /proc/meminfo
cat /proc/meminfo|grep –i ^s
2、显示/etc/passwd中以nologin结尾的行;
grep nologin$ /etc/passwd
sed -n '/nologin$/p' passwd
3、显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意字符的行;
grep ^#.* /etc/inittab
4、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行;
grep :[0-9]: /etc/inittab
grep :[[:digit:]]: /etc/inittab
5、显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行;
grep ^[[:space:]] /boot/grub2/grub.cfg
6、显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行;
grep "^[09].*\1$" /etc/inittab
7、ifconfig命令可以显示当前主机的IP地址相关的信息等,要求不包括127.0.0.1;
ifcofig eth0| grep "inetaddr" | cut -d: -f2 | cut -d " " f1(注意“”中的空格)
ifconfig eth0|grep "inet addr"|awk '{print $2}'|awk -F ':''{print $2}'
8、显示/etc/sysconfig/network-scripts/ifcfg-eth0文件中的包含了类似IP地址点分十进制数字格式的行;
grep -E "([0-9]{1,3}\.){3}\.[0-9]{1,3}"/etc/sysconfig/network-scripts/ifcfg-eth0
grep"[0-9]\{1,3\}\."\{3\}\.[0-9]\{1,3\}/etc/sysconfig/network-scripts/ifcfg-eth0
sed
sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。
sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲