感谢Linuxcast,感谢苏勇(nash_su)老师!
文件浏览
- cat 查看文件内容
- more 以翻页形式查看文件内容(只能向下翻页)
- less 以翻页形式查看文件内容(可以上下翻页)
- head 查看文件的开始10行(或指定行数)
- tail 查看文件的结束10行(或指定行数)
这部分内容前面已经学过,这里只是做一下回顾。
基于关键字进行搜索 grep
命令名称:grep
命名所在路径:/bin/grep
执行权限:所有用户
语法:grep -iv [指定字串] [文件]
功能描述:基于关键字搜索文本,在文件中搜寻字串匹配的行并输出。
例如之前我们使用过的:
上一篇博客中有对上面两条命令的详细解释,这里也不再赘述。
其他的参数:
-i
:在搜索时忽略大小写;-n
: 显示结果所在行数;-v
: 输出不带关键字的行-Ax
: 在输出的时候包含结果所在行之后的指定行数-Bx
: 在输出的时候包含结果所在行之前的指定行数
基于列处理文本
命令cut
用以基于列处理文本内容
例如:
cut -d: -fl /etc/passwd
grep linuxcast /etc/passwd | cut -d: -f3
-d
:指定分割字符(默认是TAB)-f
:指定输出的列号-c
:基于字符进行分割
在Linux中,很多文件都是以列分割格式保存的,例如我们之前学过的passwd文件,就是以冒号分割为七个部分:
…
veeja: x:1000:1000:Veeja‘s PC:/home/veeja:/bin/bash
xiaoma: x:1001:1001::/home/xiaoma:/bin/bash
…
我们对其进行一些 cut 操作:
上面的这条命令的意思就是:对/etc/passwd文件进行分割操作,-d参数指定分隔符为“:”,-f参数指定我们只取第一列的内容,所以我们看到结果中只显示了passwd文件中每一行的第一列,也就是用户名信息。
我们再看下一个:
这句命令的意思是,首先grep veeja /etc/passwd
,找出passwd文件中含有关键字veeja的一行,然后将这一行传给另一句cut -d: -f3
,对该行进行分割操作,以“:”为分割方式,取第三部分的内容,也就是该用户的UID。
另外我们也可以基于字符进行切割,也就是使用-c参数:
上面的这一条命令就是切割出/etcpasswd文件中每一行的第2-6个字符。当然这样切割是没有任何实际含义的,我们只是作为演示。
文本统计
命令wc
用以统计文本信息。
-l
:只统计行数-w
:只统计单词-c
:只统计字节数-m
:只统计字符数
上述示例分别使用了各个参数,分别统计目标文件的各类数目。
文本排序
命令sort
用以对文本内容进行排序。
-r
:进行倒序排序-n
:基于数字进行排序-f
:忽略大小写-u
:删除重复行-t c
:使用c作为分隔符分割为列进行排序-k x
:当进行基于指定字符分割为列的排序时,指定基于哪个列排序
示例:
- 给英文文本进行排序
- 给数字文本进行排序
- 给英文文本进行倒序排序
删除重复行
- 命令
sort -u
可以删除重复行
- 命令
uniq
用以删除相邻的重复行
文本比较
命令diff
可以用来进行比较两个文件的区别。
常用参数:
-i
:忽略大小写-b
:忽略文件空格数量的变化-u
:统一显示比较信息(一般用以生成patch文件)
例如:diff -u testfile1 testfile2 > final.patch
,一般我们用于开发过程中,如果新的开发程序做了一些改变,又不想将整个程序重新打包,就可以使用这条命令生成patch补丁文件。这样用户只需要下载补丁文件,然后对原程序进行打补丁即可。
示例:
- 比较两个文件的区别:
- 比较两个文件的区别(忽略大小写)
- 比较两个文件的区别(忽略空格数量的变化)
- 生成补丁文件
检查拼写
命令aspell
用以检查英文拼写。
aspell check testfile
aspell list testfile
处理文本内容
命令tr
用于处理文本内容。
参数及示例:
-d
:用于删除指定的关键字。
- 转换大小写:
搜索替换
命令sed
用于搜索并替换文本。
这里会用到一些正则表达式的内容,如果不了解也没关系,可以先简单的记忆。
例如:
命令:sed 's/linux/unix/g' testfile
,前面是命令sed,后面是我们要处理的文件testfile,而中间部分是一条正则表达式语句,意思就是对文本进行替换,将所有的linux替换为unix,g表示如果一行之中出现多个匹配项,就把每一个都替换。
命令:sed 's/linux/unix/g' testfile
:与上一条相比,指定了要搜索替换的行数,是1-50行。
如果有多个搜索替换项的话,使用-e
参数:sed -e 's/linux/unix/g' -e's/veeja/veejaliu/g' testfile
,这样就把所有的linux替换成了unix,并将所有的veeja替换成了veejaliu。
我们还可以将所有的替换选项写入一个文件,使用-f
参数读取这个文件进行替换:sed -f sededit testfile
。
That’s all.
环境:
软件版本:VirtualBox 4.3.12 r93733
Linux系统版本:CentOS 7 ×86_64 1511
如有纰漏,望不吝指出,不胜感激。