1、显示/etc/passwd文件中以bash结尾的行;
解释:使用 grep
工具来搜索文件 /etc/passwd
中匹配模式 'bash$'
的行。bash$
是一个正则表达式,其中 $
表示行结尾。因此,'bash$'
匹配以 bash
结尾的行。
grep 'bash$' /etc/passwd
运行结果:
2、找出"netstat -tan”命令的结果中,以‘LISTEN’后跟0或多个空白字符结尾的行
方法一:
netstat -tan | grep "LISTEN[[:space:]]*$"
运行结果:
方法二:
netstat -tan | grep 'LISTEN\s*$'
运行结果:
解释:LISTEN\s*$'
使用正则表达式匹配以 "LISTEN" 结尾且后面跟着 0 或多个空白字符的行。其中 \s*
表示匹配 0 或多个空白字符,而 $
表示行结尾
3、在/etc/fstab文件中不以#开头的行的行首增加#号
命令:
sed -i '/^[^#]/ s/^/#/' /etc/fstab
解释:
sed
是一个流式文本编辑器,用于对文件进行处理和转换。-i
选项表示直接在原始文件上进行修改。/^[^#]/
是一个正则表达式模式,它匹配不以#
开头的行。s/^/#/
是sed
的替换命令,它将行首的开头(^
)替换为#
。
执行该命令后,sed
将遍历 /etc/fstab
文件的每一行。对于不以 #
开头的行,sed
将在行首添加 #
号。这样就在这些行的行首增加了 #
号
4、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
sed -i '/^#[[:blank:]]\+/ s/^#//' /etc/fstab
解释:
/^#[[:blank:]]\+/
是正则表达式模式,它匹配以#
开头且后面至少跟一个空白字符的行。[[:blank:]]
表示空白字符(包括空格和制表符),+
表示匹配一个或多个空白字符。s/^#//
是sed
的替换命令,它将行首的#
替换为空字符串,即删除行首的#
号和空白字符。
5、统计出apache的access.log中访问量最多的5个IP
命令:
cat access.log | cut -d ' ' -f 1 | sort | uniq -c | sort -nr | head -5
解释:
cat access.log
用于将access.log
文件的内容输出到标准输出。cut -d ' ' -f 1
用于提取每行中的第一个字段,即 IP 地址。这里使用空格作为分隔符,-d ' '
表示使用空格作为分隔符,-f 1
表示提取第一个字段。sort
用于对 IP 地址进行排序。uniq -c
用于计算每个 IP 地址出现的次数,并在每行前面显示计数。sort -nr
用于按照计数值进行逆向排序,即按照访问量从高到低排序。head -5
用于只显示前五行,即访问量最高的五个 IP 地址。