Linux文本处理三剑客

这篇博客介绍了Linux系统中常用的文本处理工具,包括grep、egrep、fgrep和sed。grep系列命令用于搜索文本,而sed采用流编辑模式,通过模式空间和保持空间处理文本,不会直接修改原文件。awk则是一种强大的文本分析工具。文章还提及了正则表达式的基础知识。
摘要由CSDN通过智能技术生成

相关命令

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)单地址:
			#:指定行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值