💎文本处理三剑客(详)

一、sed命令

1.什么是sed

        sed(stream editor)是一款高效的流式编辑器,它一次只能处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patterm space),接着用sed命令处理缓冲区中的内容,处理完成后把缓冲区的内容送往屏幕,接着处理下一行,这样不断重复,直到文件末尾。sed处理过的文件内容并没有改变,除非使用重定向储存输出。

2.为何要用sed 

sed 对比 vim
1、sed可以把处理文件的规则事先写好,然后用同一套规则编辑多个文件
而vim只能一个个编辑===>用于用一套规则处理多个文件

2、sed处理文件,一次只处理一行,即同一时间内存中只有文件的一行内容
无论文件多大,都不会对内存造成过大的压力====>用于处理大文件

3.如何使用sed

 命令:d (删除)   p(复制) s///gi(修改替换)

 选项:-n 取消默认输出

           -i 把内容输出到屏幕(规则处理的结果+默认输出的结果)

  • sed+选项+"规则=(定位+命令)"+文件

规则:定位+命令

          定位方式:行号定位 :sed "1p" a.txt  打印第一行

                                               sed "1,3p" a.txt 打印前三行

                                               sed "3p;5p" a.txt 打印三到五行

                            正则定位:sed '/^命令名称$/p' a.txt

                                              sed '  ' 命令  a.txt 没有定位,代表定位了所有行

二、awk命令

1.什么是awk

awk与sed和grep很相似,主要擅长处理有规律的文本,主要用于一些格式化处理,

 实际上awk不仅是命令,awk拥有自己的语言:awk程序设计语言,awk的三位创建

者已将它正式定义为:样式扫描和处理语言。

       2.为何要用awk

           awk是一种样式扫描与处理工具。但其功能却大大强于sed和grep。awk提供了极其强大的功能:它几乎可以完成grep和sed所能完成的全部工作,同时,它还可以可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。

      3.如何使用awk

  • awk+选项+"规则=(定位+命令)"+文件路径

           选项:-F: (指定分隔符)

           规则:定位+命令

                        定位:行号定位:

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

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

                                    awk  -F:   'NR <= 3 || NR >= 8{print $1,$3}' test.txt

                                    awk  -F:   'NR == 3 || NR == 5 || NR == 7{print $1,$3}' test.txt

                                    正则定位:

                                     awk  -F:'//{print $1,$2}' +文件路径

                                      awk'  ' 命令    没有定位,代表定位了所有行

          命令:{print $n}

三、grep命令

              1.什么是grep

           grep擅长过滤内容,一种强大的文本搜索工具,它能使用正则表达式搜索文本,并 把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。利用这些返回值就可进行一些自动化的文本处理工作。

2.为何要用grep

           grep的工作方式:它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。

            grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

3.如何使用grep

  • grep +选项+"过滤规则"+文件

         

              选项:'正则' 

              规则:正则=(想查找的内容)+文件路径

              命令:-n  显示会行号

                         -i  忽略大小写

                         -l  只输出包含匹配行的文件名

grep -n "root" /etc/passwd  # 显示行号

 grep -i "" /etc/passwd # 忽略大小写

grep -l '内容' a.txt  # 如果文件中但凡是存在包含内容的行就算过滤成功,会返回文件名

原文地址:https://www.cnblogs.com/ChuangShi-HolySpirit/p/13865300.html