练习-grep


1.进入/lianxi目录,复制/etc/passwd到当前目录下,然后对passwd进行操作

2、查找出当前passwd文件中以ftp或者mail开头的行,在屏幕上输出。

3、查找出当前passwd文件中首行不是以r、m、f开头的行,在屏幕上输出。

4、查找出当前passwd文件中以bash结尾的行。

5、查找出/etc/login.defs文件中的有效行(不显示空行和注释行)。

6、查找出/var/log/messages文档中有16个字母的单词?

7、查找出来/etc/passwd文件里用户名包含liu同时使用bash的用户

8、查找/etc/ssh/sshd_config 里的有效行

9、查找出/etc/ssh/sshd_config 文件里的包含连续2个数字的行

10、查找出包含特殊字符的行

11、查找出不包含数字的行

12、查找出/var/log/secure里的ip地址出来

13、写一个表示下面网址的正则表达式出来--》egrep -o "[a-Z]+://[0-Z]+\.[0-Z]+(\.[0-Z]+)+" url.txt

1#. 进入目录并复制文件

bash

cd /lianxi
cp /etc/passwd ./

2. 查找以ftp或mail开头的行

bash

grep -E "^(ftp|mail)" passwd
# 或者
egrep "^(ftp|mail)" passwd

3. 查找首行不是以r、m、f开头的行

bash

grep -vE "^(r|m|f)" passwd

4. 查找以bash结尾的行

bash

grep "bash$" passwd

5. 查找/etc/login.defs中的有效行

bash

grep -vE "^(#|$)" /etc/login.defs
# 或者排除空行和注释行
grep -v "^#" /etc/login.defs | grep -v "^$"

6. 查找/var/log/messages中16个字母的单词

bash

grep -oE "\b[a-zA-Z]{16}\b" /var/log/messages

7. 查找用户名包含liu且使用bash的用户

bash

grep "liu" /etc/passwd | grep "bash$"

8. 查找/etc/ssh/sshd_config里的有效行

bash

grep -vE "^(#|$)" /etc/ssh/sshd_config

9. 查找包含连续2个数字的行

bash

grep -E "[0-9]{2}" /etc/ssh/sshd_config

10. 查找包含特殊字符的行

bash

grep -E '[[:punct:]]' passwd
# 或者指定某些特殊字符
grep -E '[!@#$%^&*()_+\-=\[\]{};:"|,.<>/?]' passwd

11. 查找不包含数字的行

bash

grep -v "[0-9]" passwd

12. 查找/var/log/secure里的IP地址

bash

grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}" /var/log/secure

13. 网址正则表达式修正

原表达式有误,修正如下:

bash

egrep -o "[a-zA-Z]+://[a-zA-Z0-9]+\.[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+" url.txt

或者更完善的版本:

bash

egrep -o "https?://[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(/[a-zA-Z0-9./?%&=_-]*)?" url.txt

练习--awk


1.获取cpu使用率最高的前5个进程的 pid %cpu command name ,按照降序排列

ps -eo pid,%cpu,command --sort=-%cpu|head

2.获取内存使用率最高的前5个进程的 pid %mem command name ,按照降序排列

ps -eo pid,%mem,command --sort=-%mem|head

3.只显示df -h结果的第一列文件系统

df -h | awk '{print $1}'

4.显示passwd文件的第5行和第10行的行号和用户名

awk -F: 'NR==5 || NR==10 {print NR,$1}' /etc/passwd

5.使用NF变量显示passwd文件倒数第二列的内容

awk -F: '{print $(NF-1)}' /etc/passwd

6.显示passwd文件中第5到第10行的用户名

awk -F: 'NR>=5 && NR<=10 {print $1}' /etc/passwd

7.显示passwd文件中第7列不是bash的用户名

awk -F: '$7 != "/bin/bash" {print $1}' /etc/passwd

8.显示passwd文件中行号是5结尾的行号和行

awk 'NR ~ /5$/ {print NR, $0}' /etc/passwd

9.用ip add只显示ip

ip add|tr -s " "|awk -F"[ /]" '/ens33$/{print $3}'

(不使用tr或者cut命令)

ip add|awk -F"[ /]" '/ens33$/{print $6}'

10.使用awk显示ens33的入站流量和出站流量(字节)

yum install net-tools -y

ifconfig

ifconfig|awk 'NR==5||NR==7{print $1,$5}'

11.使用awk命令统计以r开头的用户数目

awk -F: 'BEGIN{num=0} /^r/ {print $1; num++} END{print "以r开头的用户总数:" num}' /etc/passwd

练习--sed

1.复制/root/.bash_profile文件到当前目录下,然后修改里面的PATH变量,修改为

# 复制文件
cp /root/.bash_profile .

# 修改PATH变量(使用sed)
sed -i 's|^PATH=.*|PATH=/sanchuang/bin:$PATH|' .bash_profile

# 或者使用追加方式(如果原文件没有PATH定义)
echo 'PATH=/sanchuang/bin:$PATH' >> .bash_profile

2.sed修改SELINUX配置文件从开启(enforcing)变成禁用(disabled)

# 复制文件
cp /etc/sysconfig/selinux .

# 修改SELINUX状态
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' selinux

3.复制/etc/sysconfig/network-scripts/ifcfg-ens33到当前目录下,将当前下的ifcfg-ens33里的BOOTPROTO="dhcp" 修改为BOOTPROTO="none"

# 复制文件
cp /etc/sysconfig/network-scripts/ifcfg-ens33 .

# 修改BOOTPROTO
sed -i 's/BOOTPROTO="dhcp"/BOOTPROTO="none"/' ifcfg-ens33

# 添加网络配置
echo -e "IPADDR=192.168.34.1\nGATEWAY=192.168.34.254\nPREFIX=24\nDNS1=114.114.114.114" >> ifcfg-ens33

4.复制/etc/ssh/sshd_config到当前目录下,修改里面的端口号修改为8899

将#Port 22 配置修改为Port 8899 要求去掉前面的#号,将22修改为8899

# 复制文件
cp /etc/ssh/sshd_config .

# 修改端口配置(使用单条sed命令)
sed -i 's/^#Port 22/Port 8899/' sshd_config

# 或者分两步处理(更安全)
sed -i '/^#Port 22/ s/#Port 22/Port 8899/' sshd_config  # 去掉注释并修改端口
sed -i '/^Port [0-9]\+/ s/Port [0-9]\+/Port 8899/' sshd_config  # 修改已存在的Port行

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐