相关命令
grep命令
print lines matching a pattern(打印与模式匹配的行)
作用:文本过滤工具,根据用户指定的“模式”对目标文本逐行进行匹配检查,打印匹配到的行
用法及常用选项:
grep [OPTIONS] PATTERN [FILE...] 注意:模式两边要加引号
选项:
--color=auto:对匹配的文本着色显示
-v:显示不能够被pattern(模式)匹配到的行
-i:忽略字符大小写
-o:仅显示匹配到的字符串
-q:静默模式,不输出任何信息,只需要判断结果是否存在时会用到
-A #:after,后#行;显示被匹配到的行后#行及被匹配到的行
-B #:before,前#行;显示被匹配到的行前#行及被匹配到的行
-C #:context,前后各#行;被匹配到行前后各#行及被匹配到的行
-E:支持使用扩展的正则表达式
-F:不使用正则表达式
-P:使用prel正则表达式
egrep命令
支持扩展正则表达式实现类似于grep文本过滤功能;相当于grep -E
用法:grep [OPTIONS] PATTERN [FILE...]
选项:
-i:忽略字符大小写
-o:仅显示匹配到的字符
-G:支持基本正则表达式
fgrep命令
不支持正则表达式元字符
当无需用到元字符去编写模式时,使用fgrep性能更好
sed命令
我们知道,vim 采用的是交互式文本编辑模式,你可以用键盘命令来交互性的插入、删除或替换数据中的文本。但这里讲的是 sed 命令不同,它采用的是流编辑模式,最明显的特点是,在 sed 处理数据之前,需要预先提供一组规则,sed 会按照此规则来编辑数据。
首先先讲讲sed的模式空间与保持空间
sed之所以能以行为单位的编辑或修改文本,其原因在于它使用了两个空间;一个是活动的“模式空间(pattern space)”,另一个是起辅助作用的“暂存缓冲区(holdingspace)”这两个空间的使用。
sed编辑器逐行处理文件,并将输出结果打印到屏幕上。sed命令将当前处理的行读入“模式空间”进行处理,sed在该行上执行完所有命令后将处理好的行打印到屏幕上(除非之前的命令删除了改行),sed处理完一行就将其从模式空间中删除,然后将下一行读入模式空间,进行处理、显示。处理完文件的最后一行,sed便结束运行。sed在临时缓冲区对文件进行处理,所以不会修改原文件,除非显示指明 -i 选项。
模式空间:可以想成工程里面的流水线,数据之间在它上面进行处理,用于处理文本行
保持空间:可以想象成仓库,我们在进行数据处理的时候,作为数据的暂存区域,用于保留文本行,是保存已处理过的文本行,默认有一个空行。
注意:保持空间中默认暂存一行空行
sed 会根据脚本命令来处理文本文件中的数据,这些命令要么从命令行输入,要么存储在一个文本文件中,此命令执行数据的顺序如下:
1.每次仅读取一行内容
2.根据提供的规则命令匹配并修改数据。注意,sed 默认不会直接修改源文件数据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区的数据
3.将执行结果输出
当一行数据匹配完成后,它会继续读取下一行数据,并重复这个过程,直到将文件中所有数据处理完毕。
sed 命令的基本格式如下:
sed [OPTION]... 'SCRIPT' [input-file]...
常用选项:
-n:默认情况下,sed 会在所有的脚本指定执行完毕后,会自动输出处理后的内容,该选项不输出模式空间中的内容至屏幕
-e SCRIPT:多点编辑(该选项将其后跟的脚本命令添加到已有的命令中(实现多个脚本命令))
示例:sed -e 's@^#[[:space:]]*@@g' -e '/^UUID/d' /etc/fstab
-f /PATH/TO/SED_SCRIPT_FILE:该选项会将其后文件中的脚本命令添加到已有的命令中
每行一个编辑命令
-r:支持使用扩展正则表达式
-i [SUFFIX],--in-place[=SUFFIX]:直接编辑源文件
地址定界:
(1)空地址:对全文进行处理
(2)单地址:
#:指定行