在日常工作中,处理文本数据是一项常见任务。而 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
后面开始匹配的内容