掌握grep:提取两个指定字符串之间的内容

在日常工作中,处理文本数据是一项常见任务。而 grep 命令作为文本处理中的利器,不仅可以用来搜索指定模式的文本,还可以妙用于提取指定前缀和后缀之间的内容。本文将介绍如何利用 grep 命令的强大功能,精准提取目标前缀和后缀之间的文本内容,让你的文本处理工作更加高效和便捷。

举个栗子:
假如我们有一批html文件,但是这个html文件的编码不一(直接cat查看会有乱码),因此需要将这些文件都统一转码为UTF8。我们知道在使用iconv 转码时必须指定正确的–from-code,恰巧呢每个html文件中都有写当前页面的编码,类似这样:

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

要如何取到 gb2312 ,或者说如何提取到 charset= 之间‘gb2312’呢?

grep -oP 'charset=\K[^"]+' yourfile.html

这个命令的含义是:

yourfile.html 是你要搜索的文件。

-o 选项表示只输出匹配的部分。

-P 选项表示使用 Perl 兼容的正则表达式。

'charset=\K[^"]+' 是正则表达式的模式,它匹配以 charset= 开头,后面跟着一个或多个不是双引号字符的内容。
\K 是在 Perl 兼容的正则表达式中用来指示忽略之前匹配的内容,只输出从 \K 后面开始匹配的内容

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注