《linux命令行与脚本编程大全》笔记三

190 阅读2分钟

1、sed编辑器,用来对字符串进行处理

  • sed 命令的几个选项

image.png

2、sed中s代表替换

image.png

3、sed对文件数据处理有两种方式

  • 使用管道

773CFDC7-0E0D-4BCD-9DEE-EDC30F9AA0B6.png

  • 直接将文件写在sed命令后面

1CB3BDD0-842B-4875-93BE-33BE1DA370DF.png

4、多个sed命令使用分号 ; 分隔

4B44A773-13C2-4EF0-9185-FF88763723FA.png

5、对于有很多sed命令的情况,可以将所有的sed命令放到一个sed文件中,使用-f来使用该文件

A97249E5-BFA8-40BE-AA0E-916F9E5413F0.png

6、gawk编辑器,与sed相似

27D2878B-E1F8-4349-A31B-10B9DB4D5B28.png

  • gawk的强大之处在于脚本。你可以编写脚本来读取文本行中的数据,然后对其进行处理并显示,形成各种输出报告

7、对于文件中的每一行文本,gawk将下面的变量进行分配

454F6CBB-9F68-4FCB-84AD-52E6CB82DE02.png

  • 文本行中的数据字段是通过字段分隔符来划分的,字段分隔符默认是空白字符

D7978EB2-CDEA-4C94-879B-6681CE425829.png

8、使用 -F 指定字段分隔符

199D16A6-7944-43A6-8BA7-84C6DCE092C8.png

9、如何在脚本中使用多个命令:多个命令用冒号分割

AC27069C-B5C5-401A-90C7-5E0BE0B49540.png

10、gawk和sed中输出只能使用print,而不能用echo

2BBBA42C-EEE5-43A0-B161-0A4E3F2B1EFB.png

  • 使用gawk文件存储所有的gawk命令

11、用sed命令实现替换

  • 可以指定全局替换,或者替换几个

04A42B75-456F-4F16-9621-81F647D5C50F.png

12、如何将替换的结果写入文件

C3A78200-4227-4C78-BB87-E4F888D91AF9.png

13、sed命令会直接将原文本替换吗?

  • sed -i 会替换本身文本
  • sed 直接使用不会替换本身文本

14、用sed命令,假如想实现路径替换有两种方式

1B825BF3-331E-41AB-A6DE-810E5E9B9BF0.png

  • 使用转义,将路径中的 /  写成 /

或者使用 !

26AA7D56-B1EF-4AC0-8631-25EDDC3C3BF7.png

15、sed命令可以指定从哪一行开始替换

6C223EC8-572E-43D5-BF84-5DB26164F313.png

  • 2,$s  代表从2行开始直到最后一行都需要替换

16、也可以使用文本过滤方式

52F6556F-D38C-47F3-8D3B-094F741C019B.png

17、如何使用sed ‘d’ 删除文件中的指定行

C139C27B-21FE-4766-AFF7-9112F85A5A6E.png

  • 表示删除文件中的第三行

9E300ADD-FFC4-451B-A196-4961938F1F3D.png

  • 表示删除第三行到最后一行所有的

18、sed删除如何实现匹配命令

9C8D2FFF-9F78-4134-9376-A73885B8BAA6.png

  • 删除匹配 number 1  的对应一行

  • sed中只有加上 -i 才会更改源文件,默认不会更改原文件。可以通过重定向将更改的内容重定向到新的文件

19、如何在对应的内容前面插入新内容

F7C21DDC-2824-4415-B778-F054A75BB15F.png

20、如何在对应的内容后面插入新内容

9FFBE84C-8B6F-49DF-A69B-66F81899679F.png

21、如何在文件中插入一行

C4E3DFB6-B11E-4A87-860C-D8E2FC7BD9CB.png

  • 在第三行前插入一行字符

A5A37E66-C357-4E5C-94D9-689DC2998BBC.png

  • 在文件中匹配 a boy  并在其前面插入一行字符

22、使用 c 命令实现对某一行的修改

A9CAF6A1-DDF1-4B5B-8D68-F10B17A49FBA.png

  • 上述实现对第三行的修改

23、使用 y 实现对文件中字符的映射更改

8E0AD186-6BBF-49C1-B8A9-8B420AF89494.png

24、如何找到匹配的行,使用 p 命令

D1AF5123-7FB3-4A51-945E-99397030E9A8.png

25、如何将某个文件中的部分内容写入另一个文件中

20A614D1-BFA5-475A-9935-23F2D4CDC3F3.png

  • 将 data5.txt中的 1, 2 行写入 test.txt 中

26、sed r  将两个文件中的部分数据合并,并输出

BA6741E9-C5DD-48EC-81E7-4646A82904D9.png

  • 执行 $(grep -l "bin/sh" OldScripts/*.sh) 命令将会返回包含 /bin/sh 字符串的所有 .sh 文件的文件名。这个命令常用于查找包含指定字符串的文件列表,并将其作为另一个命令的输入参数

  • 在 Shell 中,basename 命令可以用来获取文件路径中的文件名部分。例如,如果 $filename 变量的值为 /home/user/documents/file.txt,那么 basename $filename 命令的输出将为 file.txt