Twinkle

文本处理三剑客与正则表达式详解

不羁的心 提交于 2020-08-14 18:54:12
我们知道在 Linux 中,“一切皆文件”,作为系统管理员或者程序员我们每天都需要和大量的文本文件打交道。Linux 系统为我们提供了三个文本处理工具:grep, sed, 和 awk,它们也被称为 Linux 文本处理的三剑客被大家广泛使用。今天先和大家介绍一下 grep 的以及正则表达式的用法,因为 grep 只有和正则表达式结合在一起才会发挥出它强大的威力。 Grep 的用法 grep 是一个强大的文本搜索工具,可以用于在文本文件中搜索指定格式(正则表达式)的字符串,并将匹配的行输出。它的用法如下: #grep [选项] 查找条件 目标文件 比如我们有一个文本文件,littlestar.txt,它的内容如下: TWINKLE, twinkle, little star, How I wonder what you are! Up above the world so high, Like a diamond in the sky. (1) 查找一个字符串 比如要查找“twinkle” #grep "twinkle" littlestar.txt 匹配上的字符串用红色突出显示出来了。 (2) “-i”忽略大小写 #grep -i "twinkle" littlestar.txt 结果可以看到TWINKLE 和 twinkle 都匹配上了 (3) “-n”显示行号 #grep

Elasticsearch系列---前缀搜索和模糊搜索

泪湿孤枕 提交于 2020-03-22 09:55:17
3 月,跳不动了?>>> 概要 本篇我们介绍一下部分搜索的几种玩法,我们经常使用的浏览器搜索框,输入时会弹出下拉提示,也是基于局部搜索原理实现的。 前缀搜索 我们在前面了解的搜索,词条是最小的匹配单位,也是倒排索引中存在的词,现在我们来聊聊部分匹配的话题,只匹配一个词条中的一部分内容,相当于mysql的"where content like '%love%'",在数据库里一眼就能发现这种查询是不走索引的,效率非常低。 Elasticsearch对这种搜索有特殊的拆分处理,支持多种部分搜索格式,这次重点在于not_analyzed精确值字段的前缀匹配。 前缀搜索语法 我们常见的可能有前缀搜需求的有邮编、产品序列号、快递单号、证件号的搜索,这些值的内容本身包含一定的逻辑分类含义,如某个前缀表示地区、年份等信息,我们以邮编为例子: # 只创建一个postcode字段,类型为keyword PUT /demo_index { "mappings": { "address": { "properties": { "postcode": { "type": "keyword" } } } } } # 导入一些示例的邮编 POST /demo_index/address/_bulk { "index": { "_id": 1 }} { "postcode" : "510000"} {