一:处理两个文件中的数据
这个命令就是join命令时会读取指定的两个文件,并将具有公共字段的行连接起来。
注意:在进行这一步前文件要经过排序。
格式: join [选项] 文件名1 文件名2
join命令在处理两个相关数据的文件时常有用,选项看不懂的搭配操作实践实践就知道了。
常用的选项如下表所示:
选项 | 说明 |
-a | 除了正常的显示内容外,还会显示文件中没有相同的数据的行。有两个文件编号1和2(数字1表示连接文件1中的内容,数字2表示连接文件2中的内容) |
-i | 忽略大小写 |
-j | 指定要串联的字段 |
-o | 按照指定的格式显示结果 |
文件fiel1和fiel2中有相同的数据是每行前面的行号,现在把具有相同的行号的行连接起来,如果需要指定连接的是第2列文字。join -j 2 fiel3 fiel4表示指定第2列为连接字段,如下图所示:
上面这种连接不会把文件fiel3中的第4行一起串联起类,加上-a选项之后就可以了。join -j 2 -a 2 fiel3 fiel4会显示文件fiel3中无法连接的字段。
二:文本处理工具
这个命令就是grep命令,这个命令是一个非常强大的文本处理工具,grep命令也具有搜索功能,可以在文件中或标准输出上搜索指定的字符串。
格式:grep [选项] 字符串 文件名
字符串指的是需要查找的字符串,grep命令可以根据指定的选项过滤不同的文件内容,常用选项如下表所示:
选项 | 说明 |
-n | 在搜索结果中显示行号 |
-l | 列出带有匹配行的文件名 |
-v | 列出没有匹配内容的行 |
-i | 执行不区分大小的的搜索 |
如果我要搜索文件fiel1中的带有study的行,可以指定-n这个选项,这样搜索的结果就包括行号和带有study的行。这样搜索是区分大小写的如果不区分大小写,可以再指定-i选项,如下图所示:
grep除了指定选项,还可以通过正则表达式搜索指定的字符串。简单来说这个正则表达式就是处理字符串的方法,只不过它有自己独特的检索方式。一个正则表达式既可以是一些纯文本的文字,也可以是用来产生模式的特殊字符,正则表达式里常用的字符如下表所示;
字符 | 说明 |
\ | 忽略正则表达式里的特殊字符的原本含义 |
. | 匹配任何字符 |
* | 匹配前一个字符0此或者更多次 |
^ | 匹配正则表达式的开始行 |
$ | 匹配正则表达式的末尾行 |
? | 指定前一个字符出现0次或多次 |
+ | 指定前一个字符·重复1次或者多次 |
[] | 匹配[]中的字符 |
上面可以看出+、等符号已经不是它们原本的含义了,如果想要恢复他们原本的含义就要在它们之前添加反斜杠\,比如\、\+。
下面使用·正则表达式和grep命令搭配在一起实现搜索功能的用法。grep ‘^s.*n $ fiel1 表示搜索文件fiel1中中以s开头以y结尾的字符串,这种方式搜所的结果会很准确。相反grep '^s.\+$ fiel1 表示搜索文件中以c开头以#结尾的字符串,如下图所示:
如果单独使用.的功能,它会显示除空行外的所有行,演示如下图所示:
如果想搜索带有.的行,可以在上面的基础上加\。
正则表达式通过不同的字符之间的排列组合可以实现搜索、替换、删除等不同的功能。
标签:选项,文件,grep,正则表达式,管理文件,指定,搜索,Ubuntu,目录 From: https://blog.51cto.com/u_15912723/7161589