部署测试环境

  1. 部署测试环境:测试环境用容器来部署。这样可以保证所有开发人员环境统一。可以选择docker或者podman,选择对应compose编写部署文件。使用dockerfile编译与打包程序,可以减少自动化测试时环境造成的编译打包问题。
  2. 出现错误可以有多种选择。一,当应用有使用统一的日志管理中间件时可以直接后台查看日志;二,当使用容器部署测试时,可使用exec命令参数进入shell,查看日志目录与日志文件;三,当dockerfile导出日志数据卷时,可直接查看对应的导出目录;四,在shell中可以使用vim,cat,等命令查看日志文件。
  3. 当可执行文件权限不足时,可使用“ls -la 文件名”查看文件是否有执行权限以及文件属于的用户与用户组。若文件属于当前环境使用的用户,则使用chmod命令添加执行权限;若文件不属于当前用户,且当前用户不存在与文件所有者组中时,应人为判断是否可以修改文件所有者或组,亦或是将当前环境使用的用户加入所有者组中,使用chown进行修改。

    基本正则表达式

    image.png

    扩展正则表达式

    image.png
    image.png

    grep

    image.png
    image.png
    image.png
    image.png
    image.png

    正则表达式grep实战

    ```powershell [root@node4 tmp]# /tmp [root@node4 tmp]# mkdir data [root@node4 tmp]# [root@node4 tmp]# cd data

将/etc/passwd文件内容重定向到当前目录的pwd.txt文件下

[root@node4 data]# cat /etc/passwd > ./pwd.txt [root@node4 data]# [root@node4 data]# ll 总用量 4 -rw-r—r—. 1 root root 1134 11月 12 14:35 pwd.txt [root@node4 data]# cat pwd.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin chrony:x:997:995::/var/lib/chrony:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin es:x:1000:1000::/home/es:/bin/bash [root@node4 data]# [root@node4 data]# vim pwd.txt

-i表示忽略大小写查找出含有root的所有行

[root@node4 data]# grep -i “root” pwd.txt root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin

-n表示显示行号

[root@node4 data]# grep -i -n “root” pwd.txt 1:root:x:0:0:root:/root:/bin/bash 10:operator:x:11:0:operator:/root:/sbin/nologin

-c统计匹配结果的行数

[root@node4 data]# grep -i “root” pwd.txt -c 2

带行号输出

[root@node4 data]# cat -n luffy.txt 1 I am oldboy teacher 2 I teacher linux 3 I like python 4 5 My qq is 877348180. 6 7 My name is chaoge. 8 9 Our school website is http://oldboyedu.com

找出所有空行

[root@node4 data]# grep ‘^$’ luffy.txt

[root@node4 data]# grep ‘^$’ luffy.txt -n 4: 6: 8:

[root@node4 data]# grep ‘^$’ luffy.txt -c 3

找出没有空行的行

[root@node4 data]# grep ‘^$’ luffy.txt -n -v 1:I am oldboy teacher 2:I teacher linux 3:I like python 5:My qq is 877348180. 7:My name is chaoge. 9:Our school website is http://oldboyedu.com

[root@node4 data]# cat luffy.txt I am oldboy teacher I teacher linux I like python

My qq is 877348180.

My name is chaoge.

Our school website is http://oldboyedu.com

我是注释行

过滤掉注释行和空行

[root@node4 data]# grep ‘^#’ luffy.txt -v | grep ‘^$’ -v I am oldboy teacher I teacher linux I like python My qq is 877348180. My name is chaoge. Our school website is http://oldboyedu.com

  1. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/22523384/1668235066379-6c13bb2d-729d-40e0-8080-684c506dde53.png#averageHue=%23252423&clientId=u5c127131-a775-4&from=paste&height=918&id=ue778f3e6&originHeight=918&originWidth=923&originalType=binary&ratio=1&rotation=0&showTitle=false&size=86778&status=done&style=none&taskId=u688b23f4-068e-487c-935c-93dd277398e&title=&width=923)<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/22523384/1668235116307-7852329b-0530-4d1e-9a9e-cdc67809a8f6.png#averageHue=%23262422&clientId=u5c127131-a775-4&from=paste&height=920&id=ua2212bc0&originHeight=920&originWidth=790&originalType=binary&ratio=1&rotation=0&showTitle=false&size=83164&status=done&style=none&taskId=u2d1285d8-10d7-4b21-a74d-e6ee840ec24&title=&width=790)
  2. <a name="F3LFf"></a>
  3. ### ^符的用法
  4. ```powershell
  5. # 找出所有m开头的行
  6. [root@node4 data]# grep '^m' luffy.txt
  7. # 找出所有m开头的行,忽略大小写
  8. [root@node4 data]# grep -i '^m' luffy.txt
  9. My qq is 877348180.
  10. My name is chaoge.
  11. # 找出所有i开头的行
  12. [root@node4 data]# grep '^i' luffy.txt
  13. # 找出所有i开头的行,忽略大小写
  14. [root@node4 data]# grep -i '^i' luffy.txt
  15. I am oldboy teacher
  16. I teacher linux
  17. I like python

$符的用法

  1. [root@node4 data]# cat -n luffy.txt
  2. 1 I am oldboy teacher
  3. 2 I teacher linux
  4. 3 I like python
  5. 4
  6. 5 My qq is 877348180.
  7. 6
  8. 7 My name is chaoge.
  9. 8
  10. 9 Our school website is http://oldboyedu.com
  11. 10 #我是注释行
  12. # 此处将.当做正则表达式处理,匹配一个或多个
  13. [root@node4 data]# grep -n '.$' luffy.txt
  14. 1:I am oldboy teacher
  15. 2:I teacher linux
  16. 3:I like python
  17. 5:My qq is 877348180.
  18. 7:My name is chaoge.
  19. 9:Our school website is http://oldboyedu.com
  20. 10:#我是注释行
  21. # 在.前面加上转义字符\
  22. [root@node4 data]# grep -n '\.$' luffy.txt
  23. 5:My qq is 877348180.
  24. 7:My name is chaoge.
  25. [root@node4 data]# grep -n '/bin/bash$' pwd.txt
  26. 1:root:x:0:0:root:/root:/bin/bash
  27. 25:es:x:1000:1000::/home/es:/bin/bash
  28. # -o表示只显示需要匹配的内容
  29. [root@node4 data]# grep -n '/bin/bash$' pwd.txt -o
  30. 1:/bin/bash
  31. 25:/bin/bash
  32. # -v表示只显示不以/bin/bash结尾的行
  33. [root@node4 data]# grep -n '/bin/bash$' pwd.txt -v
  34. 2:bin:x:1:1:bin:/bin:/sbin/nologin
  35. 3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
  36. 4:adm:x:3:4:adm:/var/adm:/sbin/nologin
  37. 5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  38. 6:sync:x:5:0:sync:/sbin:/bin/sync
  39. 7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  40. 8:halt:x:7:0:halt:/sbin:/sbin/halt
  41. 9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  42. 10:operator:x:11:0:operator:/root:/sbin/nologin
  43. 11:games:x:12:100:games:/usr/games:/sbin/nologin
  44. 12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  45. 13:nobody:x:99:99:Nobody:/:/sbin/nologin
  46. 14:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
  47. 15:dbus:x:81:81:System message bus:/:/sbin/nologin
  48. 16:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
  49. 17:libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
  50. 18:abrt:x:173:173::/etc/abrt:/sbin/nologin
  51. 19:rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
  52. 20:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
  53. 21:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
  54. 22:ntp:x:38:38::/etc/ntp:/sbin/nologin
  55. 23:chrony:x:997:995::/var/lib/chrony:/sbin/nologin
  56. 24:tcpdump:x:72:72::/:/sbin/nologin

image.png

.符号的用法

“.”表示任意一个字符,有且只有一个,不包含空行

  1. [root@node4 data]# cat -n luffy.txt
  2. 1 I am oldboy teacher
  3. 2 I teacher linux
  4. 3 I like python
  5. 4
  6. 5 My qq is 877348180.
  7. 6
  8. 7 My name is chaoge.
  9. 8
  10. 9 Our school website is http://oldboyedu.com
  11. [root@node4 data]# grep -i -n "." luffy.txt
  12. 1:I am oldboy teacher
  13. 2:I teacher linux
  14. 3:I like python
  15. 5:My qq is 877348180.
  16. 7:My name is chaoge.
  17. 9:Our school website is http://oldboyedu.com
  18. 10:#我是注释行
  19. [root@node4 data]# grep -i -n ".s" luffy.txt
  20. 5:My qq is 877348180.
  21. 7:My name is chaoge.
  22. 9:Our school website is http://oldboyedu.com

image.png

\转义字符

找出文中所有的点“.”

  1. [root@node4 data]# grep -i -n "\." luffy.txt
  2. 5:My qq is 877348180.
  3. 7:My name is chaoge.
  4. 9:Our school website is http://oldboyedu.com

*符号的用法

  1. # 贪婪匹配
  2. [root@node4 data]# grep -n ".*e" luffy.txt
  3. 1:I am oldboy teacher
  4. 2:I teacher linux
  5. 3:I like python
  6. 7:My name is chaoge.
  7. 9:Our school website is http://oldboyedu.com

image.png

[abc]中括号

image.png

  1. [root@node4 data]# grep '[a-z]' luffy.txt
  2. I am oldboy teacher
  3. I teacher linux
  4. I like python
  5. My qq is 877348180.
  6. My name is chaoge.
  7. Our school website is http://oldboyedu.com
  8. [root@node4 data]# grep '[A-Z]' luffy.txt
  9. I am oldboy teacher
  10. I teacher linux
  11. I like python
  12. My qq is 877348180.
  13. My name is chaoge.
  14. Our school website is http://oldboyedu.com
  15. [root@node4 data]# grep '[A-Z0-9]' luffy.txt
  16. I am oldboy teacher
  17. I teacher linux
  18. I like python
  19. My qq is 877348180.
  20. My name is chaoge.
  21. Our school website is http://oldboyedu.com

image.png
image.png
image.png

扩展正则表达式实战

+号用法

+号表示匹配前一个字符1次或多次,必须使用grep -E扩展正则

  1. [root@node4 data]# grep -E "i+" luffy.txt
  2. I teacher linux
  3. I like python
  4. My qq is 877348180.
  5. My name is chaoge.
  6. Our school website is http://oldboyedu.com
  7. [root@node4 data]# grep -E "ch+" luffy.txt
  8. I am oldboy teacher
  9. I teacher linux
  10. My name is chaoge.
  11. Our school website is http://oldboyedu.com

image.png

?符号用法

匹配前一个字符0次或1次

  1. [root@node4 data]# cat test.tx
  2. gooooooooooood
  3. god
  4. gd
  5. gooooood
  6. [root@node4 data]# grep -E "go?d" test.tx
  7. god
  8. gd

|符号用法

|符号表示或者的意思

  1. [root@node4 data]# find /tmp/data -name "*.tx*"
  2. /tmp/data/pwd.txt
  3. /tmp/data/luffy.txt
  4. /tmp/data/test.tx
  5. [root@node4 data]# find /tmp/data -name "*.tx*" | grep -E "l|e"
  6. /tmp/data/luffy.txt
  7. /tmp/data/test.tx
  8. [root@node4 data]#
  9. [root@node4 data]#

image.png

()小括号用法

image.png

  1. [root@node4 data]# cat test.txt
  2. gooooooooooood
  3. god
  4. gd
  5. gooooood
  6. glad
  7. good
  8. gooooood
  9. [root@node4 data]# grep -E "good|glad" test.txt
  10. glad
  11. good
  12. [root@node4 data]#
  13. [root@node4 data]# grep -E "g(oo|la)d" test.txt
  14. glad
  15. good

{n,m}匹配次数

重复前一个字符各种次数,可以通过-o参数显示明确的匹配过程

  1. [root@node4 data]# cat test1.txt
  2. yyyyyyyu
  3. ccccccchao
  4. yyyu
  5. yuchaooooooo
  6. [root@node4 data]# grep -E "y{2,4}" test1.txt
  7. yyyyyyyu
  8. yyyu

image.png

sed

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

sed案例

  1. [root@node4 data]# cat -n luffycity.tx
  2. 1 My name is chaoge.
  3. 2 I teacher linux.
  4. 3 I like play computer game.
  5. 4 My qq is 877348180.
  6. 5 My school website is http://oldboyedu.com
  7. 6 #我是注释行

1、输出文件第2、3行的内容

  1. [root@node4 data]# sed "2,3" luffycity.tx
  2. sed:-e 表达式 #1,字符 3:遗漏命令
  3. # 默认输出所有内容(符合规则 + 不符合规则的内容都输出)
  4. [root@node4 data]# sed "2,3p" luffycity.tx
  5. My name is chaoge.
  6. I teacher linux.
  7. I teacher linux.
  8. I like play computer game.
  9. I like play computer game.
  10. My qq is 877348180.
  11. My school website is http://oldboyedu.com
  12. #我是注释行
  13. # -n表示只输出符合规则的内容行
  14. [root@node4 data]# sed "2,3p" luffycity.tx -n
  15. I teacher linux.
  16. I like play computer game.
  17. # 2,+3p表示从第二行开始向下输出打印三行内容
  18. [root@node4 data]# sed "2,+3p" luffycity.tx -n
  19. I teacher linux.
  20. I like play computer game.
  21. My qq is 877348180.
  22. My school website is http://oldboyedu.com

2、过滤出含有linux的字符串行

  1. # sed可以实现grep的过滤效果,必须把要过滤的内容放在双斜杠中
  2. [root@node4 data]# sed "/linux/p" luffycity.tx
  3. My name is chaoge.
  4. I teacher linux.
  5. I teacher linux.
  6. I like play computer game.
  7. My qq is 877348180.
  8. My school website is http://oldboyedu.com
  9. #我是注释行
  10. [root@node4 data]# sed "/linux/p" luffycity.tx -n
  11. I teacher linux.

3、删除有game的行

  1. [root@node4 data]# sed "/game/p" luffycity.tx
  2. My name is chaoge.
  3. I teacher linux.
  4. I like play computer game.
  5. I like play computer game.
  6. My qq is 877348180.
  7. My school website is http://oldboyedu.com
  8. #我是注释行
  9. # 删除有game的行,此时只在内存中删除
  10. [root@node4 data]# sed "/game/d" luffycity.tx -n
  11. [root@node4 data]#
  12. [root@node4 data]# sed "/game/d" luffycity.tx
  13. My name is chaoge.
  14. I teacher linux.
  15. My qq is 877348180.
  16. My school website is http://oldboyedu.com
  17. #我是注释行
  18. [root@node4 data]#
  19. [root@node4 data]# cat luffycity.tx
  20. My name is chaoge.
  21. I teacher linux.
  22. I like play computer game.
  23. My qq is 877348180.
  24. My school website is http://oldboyedu.com
  25. #我是注释行
  26. # 直接将修改结果写入文件,即硬删除
  27. [root@node4 data]# sed "/game/d" luffycity.tx -i
  28. [root@node4 data]#
  29. [root@node4 data]# cat luffycity.tx
  30. My name is chaoge.
  31. I teacher linux.
  32. My qq is 877348180.
  33. My school website is http://oldboyedu.com
  34. #我是注释行
  35. [root@node4 data]# cat luffycity.tx
  36. My name is chaoge.
  37. I teacher linux.
  38. My qq is 877348180.
  39. My school website is http://oldboyedu.com
  40. My school website is http://oldboyedu.com
  41. My school website is http://oldboyedu.com
  42. My school website is http://oldboyedu.com
  43. My school website is http://oldboyedu.com
  44. My school website is http://oldboyedu.com
  45. [root@node4 data]#
  46. [root@node4 data]# sed '4,$d' luffycity.tx
  47. My name is chaoge.
  48. I teacher linux.
  49. My qq is 877348180.
  50. [root@node4 data]#
  51. [root@node4 data]# sed '5,$d' luffycity.tx
  52. My name is chaoge.
  53. I teacher linux.
  54. My qq is 877348180.
  55. My school website is http://oldboyedu.com
  56. # 删除第五行到末尾的内容
  57. [root@node4 data]# sed '5,$d' luffycity.tx -i
  58. [root@node4 data]#
  59. [root@node4 data]# cat luffycity.tx
  60. My name is chaoge.
  61. I teacher linux.
  62. My qq is 877348180.
  63. My school website is http://oldboyedu.com

4、将文件中的My全部替换为His

image.png

  1. [root@node4 data]# cat luffycity.tx
  2. My name is chaoge.
  3. I teacher linux.
  4. My qq is 877348180.
  5. My school website is http://oldboyedu.com
  6. [root@node4 data]# sed 's/My/His/g' luffycity.tx
  7. His name is chaoge.
  8. I teacher linux.
  9. His qq is 877348180.
  10. His school website is http://oldboyedu.com
  11. [root@node4 data]# cat luffycity.tx
  12. My name is chaoge.
  13. I teacher linux.
  14. My qq is 877348180.
  15. My school website is http://oldboyedu.com
  16. [root@node4 data]# sed 's/My/His/g' luffycity.tx -i
  17. [root@node4 data]#
  18. [root@node4 data]# cat luffycity.tx
  19. His name is chaoge.
  20. I teacher linux.
  21. His qq is 877348180.
  22. His school website is http://oldboyedu.com

5、批量替换

image.png

  1. [root@node4 data]# cat luffycity.tx
  2. His name is chaoge.
  3. I teacher linux.
  4. His qq is 877348180.
  5. His school website is http://oldboyedu.com
  6. [root@node4 data]#
  7. [root@node4 data]# sed -e 's/His/My/g' -e 's/877348180/12345678/g' luffycity.tx
  8. My name is chaoge.
  9. I teacher linux.
  10. My qq is 12345678.
  11. My school website is http://oldboyedu.com
  12. [root@node4 data]#
  13. [root@node4 data]# cat luffycity.tx
  14. His name is chaoge.
  15. I teacher linux.
  16. His qq is 877348180.
  17. His school website is http://oldboyedu.com
  18. [root@node4 data]#
  19. [root@node4 data]# sed -e 's/His/My/g' -e 's/877348180/12345678/g' luffycity.tx -i
  20. [root@node4 data]#
  21. [root@node4 data]# cat luffycity.tx
  22. My name is chaoge.
  23. I teacher linux.
  24. My qq is 12345678.
  25. My school website is http://oldboyedu.com

6、追加命令

image.png

  1. [root@node4 data]# cat luffycity.tx
  2. My name is chaoge.
  3. I teacher linux.
  4. My qq is 12345678.
  5. My school website is http://oldboyedu.com
  6. # 2a表示在第2行后面添加一行内容
  7. # 2i表示在第二行前面添加一行内容
  8. [root@node4 data]# sed -i '2a I am useing sed command' luffycity.tx
  9. [root@node4 data]#
  10. [root@node4 data]# cat luffycity.tx
  11. My name is chaoge.
  12. I teacher linux.
  13. I am useing sed command
  14. My qq is 12345678.
  15. My school website is http://oldboyedu.com
  16. # \n表示换行输出多行
  17. [root@node4 data]# sed '3a I am useing sed command.\nI like you.' luffycity.tx -i
  18. [root@node4 data]#
  19. [root@node4 data]# cat luffycity.tx
  20. My name is chaoge.
  21. I teacher linux.
  22. I am useing sed command
  23. I am useing sed command.
  24. I like you.
  25. My qq is 12345678.
  26. My school website is http://oldboyedu.com

在每行后面插入新内容
  1. [root@node4 data]# sed 'a -------------------' luffycity.tx
  2. My name is chaoge.
  3. -------------------
  4. I teacher linux.
  5. -------------------
  6. I am useing sed command
  7. -------------------
  8. I am useing sed command.
  9. -------------------
  10. I like you.
  11. -------------------
  12. My qq is 12345678.
  13. -------------------
  14. My school website is http://oldboyedu.com
  15. -------------------
  16. [root@node4 data]#
  17. [root@node4 data]# sed 'a -------------------' luffycity.tx -i
  18. [root@node4 data]#
  19. [root@node4 data]# cat luffycity.tx
  20. My name is chaoge.
  21. -------------------
  22. I teacher linux.
  23. -------------------
  24. I am useing sed command
  25. -------------------
  26. I am useing sed command.
  27. -------------------
  28. I like you.
  29. -------------------
  30. My qq is 12345678.
  31. -------------------
  32. My school website is http://oldboyedu.com
  33. -------------------

sed配合正则表达式企业案例

取出linux的IP地址

  1. [root@node4 data]# ifconfig
  2. docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
  3. inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
  4. ether 02:42:b2:94:02:c5 txqueuelen 0 (Ethernet)
  5. RX packets 0 bytes 0 (0.0 B)
  6. RX errors 0 dropped 0 overruns 0 frame 0
  7. TX packets 0 bytes 0 (0.0 B)
  8. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  9. ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  10. inet 192.168.195.104 netmask 255.255.255.0 broadcast 192.168.195.255
  11. inet6 fe80::3b82:28c8:e41d:f145 prefixlen 64 scopeid 0x20<link>
  12. ether 00:0c:29:a9:bf:4b txqueuelen 1000 (Ethernet)
  13. RX packets 5859 bytes 513911 (501.8 KiB)
  14. RX errors 0 dropped 0 overruns 0 frame 0
  15. TX packets 4005 bytes 434572 (424.3 KiB)
  16. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  17. lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
  18. inet 127.0.0.1 netmask 255.0.0.0
  19. inet6 ::1 prefixlen 128 scopeid 0x10<host>
  20. loop txqueuelen 1000 (Local Loopback)
  21. RX packets 32 bytes 2592 (2.5 KiB)
  22. RX errors 0 dropped 0 overruns 0 frame 0
  23. TX packets 32 bytes 2592 (2.5 KiB)
  24. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  25. [root@node4 data]#
  26. [root@node4 data]# ifconfig ens33
  27. ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  28. inet 192.168.195.104 netmask 255.255.255.0 broadcast 192.168.195.255
  29. inet6 fe80::3b82:28c8:e41d:f145 prefixlen 64 scopeid 0x20<link>
  30. ether 00:0c:29:a9:bf:4b txqueuelen 1000 (Ethernet)
  31. RX packets 5880 bytes 515607 (503.5 KiB)
  32. RX errors 0 dropped 0 overruns 0 frame 0
  33. TX packets 4017 bytes 436276 (426.0 KiB)
  34. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  35. [root@node4 data]#
  36. # 取出第二行的内容
  37. [root@node4 data]# ifconfig ens33 | sed "2p" -n
  38. inet 192.168.195.104 netmask 255.255.255.0 broadcast 192.168.195.255
  39. # 去掉ip前后的内容
  40. [root@node4 data]# ifconfig ens33 | sed "2p" -n | sed "s/^.*inet//" | sed "s/net.*$//"
  41. 192.168.195.104

image.png

  1. [root@node4 data]# ifconfig ens33 | sed "2p" -n
  2. inet 192.168.195.104 netmask 255.255.255.0 broadcast 192.168.195.255
  3. [root@node4 data]#
  4. [root@node4 data]# ifconfig ens33 | sed -e "2s/^.*inet//" -e "2s/net.*$//p" -n
  5. 192.168.195.104

image.png

awk

image.png

awk基础

image.png

awk场景

image.png

  1. [root@node4 data]# cat chaoge.txt
  2. pyyu1 pyyu2 pyyu3 pyyu4 pyyu5
  3. pyyu6 pyyu7 pyyu8 pyyu9 pyyu10
  4. pyyu11 pyyu12 pyyu13 pyyu14 pyyu15
  5. pyyu16 pyyu17 pyyu18 pyyu19 pyyu20
  6. pyyu21 pyyu22 pyyu23 pyyu24 pyyu25
  7. [root@node4 data]#
  8. [root@node4 data]# awk '{print $1}' chaoge.txt
  9. pyyu1
  10. pyyu6
  11. pyyu11
  12. pyyu16
  13. pyyu21
  14. [root@node4 data]#
  15. [root@node4 data]# awk '{print $2}' chaoge.txt
  16. pyyu2
  17. pyyu7
  18. pyyu12
  19. pyyu17
  20. pyyu22
  21. [root@node4 data]# awk '{print $0}' chaoge.txt
  22. pyyu1 pyyu2 pyyu3 pyyu4 pyyu5
  23. pyyu6 pyyu7 pyyu8 pyyu9 pyyu10
  24. pyyu11 pyyu12 pyyu13 pyyu14 pyyu15
  25. pyyu16 pyyu17 pyyu18 pyyu19 pyyu20
  26. pyyu21 pyyu22 pyyu23 pyyu24 pyyu25

image.png
image.png

awk内置变量

image.png
image.png

  1. [root@node4 data]# awk '{print $2 $4 $5}' chaoge.txt
  2. pyyu2pyyu4pyyu5
  3. pyyu7pyyu9pyyu10
  4. pyyu12pyyu14pyyu15
  5. pyyu17pyyu19pyyu20
  6. pyyu22pyyu24pyyu25
  7. [root@node4 data]#
  8. [root@node4 data]# awk '{print $2,$4,$5}' chaoge.txt
  9. pyyu2 pyyu4 pyyu5
  10. pyyu7 pyyu9 pyyu10
  11. pyyu12 pyyu14 pyyu15
  12. pyyu17 pyyu19 pyyu20
  13. pyyu22 pyyu24 pyyu25

自定义输出内容

image.png

  1. [root@node4 data]# awk '{print "第二列",$2,"第五列",$5,"第四列",$4}' chaoge.txt
  2. 第二列 pyyu2 第五列 pyyu5 第四列 pyyu4
  3. 第二列 pyyu7 第五列 pyyu10 第四列 pyyu9
  4. 第二列 pyyu12 第五列 pyyu15 第四列 pyyu14
  5. 第二列 pyyu17 第五列 pyyu20 第四列 pyyu19
  6. 第二列 pyyu22 第五列 pyyu25 第四列 pyyu24
  7. [root@node4 data]#
  8. [root@node4 data]# awk '{print "第二列:"$2,"第五列:"$5,"第四列:"$4}' chaoge.txt
  9. 第二列:pyyu2 第五列:pyyu5 第四列:pyyu4
  10. 第二列:pyyu7 第五列:pyyu10 第四列:pyyu9
  11. 第二列:pyyu12 第五列:pyyu15 第四列:pyyu14
  12. 第二列:pyyu17 第五列:pyyu20 第四列:pyyu19
  13. 第二列:pyyu22 第五列:pyyu25 第四列:pyyu24

awk参数

image.png

显示文件第三行

image.png

  1. [root@node4 data]# cat -n chaoge.txt
  2. 1 pyyu1 pyyu2 pyyu3 pyyu4 pyyu5
  3. 2 pyyu6 pyyu7 pyyu8 pyyu9 pyyu10
  4. 3 pyyu11 pyyu12 pyyu13 pyyu14 pyyu15
  5. 4 pyyu16 pyyu17 pyyu18 pyyu19 pyyu20
  6. 5 pyyu21 pyyu22 pyyu23 pyyu24 pyyu25
  7. [root@node4 data]#
  8. [root@node4 data]# awk 'NR==3{print $0}' chaoge.txt
  9. pyyu11 pyyu12 pyyu13 pyyu14 pyyu15

显示文件2-5行

image.png

  1. [root@node4 data]# cat -n chaoge.txt
  2. 1 pyyu1 pyyu2 pyyu3 pyyu4 pyyu5
  3. 2 pyyu6 pyyu7 pyyu8 pyyu9 pyyu10
  4. 3 pyyu11 pyyu12 pyyu13 pyyu14 pyyu15
  5. 4 pyyu16 pyyu17 pyyu18 pyyu19 pyyu20
  6. 5 pyyu21 pyyu22 pyyu23 pyyu24 pyyu25
  7. [root@node4 data]#
  8. [root@node4 data]# awk 'NR==2,NR==5{print $0}' chaoge.txt
  9. pyyu6 pyyu7 pyyu8 pyyu9 pyyu10
  10. pyyu11 pyyu12 pyyu13 pyyu14 pyyu15
  11. pyyu16 pyyu17 pyyu18 pyyu19 pyyu20
  12. pyyu21 pyyu22 pyyu23 pyyu24 pyyu25

给每一行的内容添加行号

image.png
image.png
image.png

  1. [root@node4 data]# cat -n chaoge.txt
  2. 1 pyyu1 pyyu2 pyyu3 pyyu4 pyyu5
  3. 2 pyyu6 pyyu7 pyyu8 pyyu9 pyyu10
  4. 3 pyyu11 pyyu12 pyyu13 pyyu14 pyyu15
  5. 4 pyyu16 pyyu17 pyyu18 pyyu19 pyyu20
  6. 5 pyyu21 pyyu22 pyyu23 pyyu24 pyyu25
  7. # NF表示总列数
  8. [root@node4 data]# awk '{print $1,$(NF-1),$(NF-2)}' chaoge.txt
  9. pyyu1 pyyu4 pyyu3
  10. pyyu6 pyyu9 pyyu8
  11. pyyu11 pyyu14 pyyu13
  12. pyyu16 pyyu19 pyyu18
  13. pyyu21 pyyu24 pyyu23

image.png

取出IP地址

  1. [root@node4 data]# ifconfig
  2. docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
  3. inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
  4. ether 02:42:b2:94:02:c5 txqueuelen 0 (Ethernet)
  5. RX packets 0 bytes 0 (0.0 B)
  6. RX errors 0 dropped 0 overruns 0 frame 0
  7. TX packets 0 bytes 0 (0.0 B)
  8. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  9. ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  10. inet 192.168.195.104 netmask 255.255.255.0 broadcast 192.168.195.255
  11. inet6 fe80::3b82:28c8:e41d:f145 prefixlen 64 scopeid 0x20<link>
  12. ether 00:0c:29:a9:bf:4b txqueuelen 1000 (Ethernet)
  13. RX packets 7987 bytes 696327 (680.0 KiB)
  14. RX errors 0 dropped 0 overruns 0 frame 0
  15. TX packets 5355 bytes 575490 (562.0 KiB)
  16. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  17. lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
  18. inet 127.0.0.1 netmask 255.0.0.0
  19. inet6 ::1 prefixlen 128 scopeid 0x10<host>
  20. loop txqueuelen 1000 (Local Loopback)
  21. RX packets 32 bytes 2592 (2.5 KiB)
  22. RX errors 0 dropped 0 overruns 0 frame 0
  23. TX packets 32 bytes 2592 (2.5 KiB)
  24. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  25. [root@node4 data]#
  26. [root@node4 data]# ifconfig ens33
  27. ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  28. inet 192.168.195.104 netmask 255.255.255.0 broadcast 192.168.195.255
  29. inet6 fe80::3b82:28c8:e41d:f145 prefixlen 64 scopeid 0x20<link>
  30. ether 00:0c:29:a9:bf:4b txqueuelen 1000 (Ethernet)
  31. RX packets 8020 bytes 698979 (682.5 KiB)
  32. RX errors 0 dropped 0 overruns 0 frame 0
  33. TX packets 5373 bytes 577790 (564.2 KiB)
  34. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  35. [root@node4 data]# ifconfig ens33 | awk 'NR==2{print $0}'
  36. inet 192.168.195.104 netmask 255.255.255.0 broadcast 192.168.195.255
  37. [root@node4 data]#
  38. [root@node4 data]# ifconfig ens33 | awk 'NR==2{print $2}'
  39. 192.168.195.104

image.png

grep练习题

image.png
image.png
image.png
image.png
image.png