linux常用的命令

Linux高级命令详解【乐搏TestPRO】

2019-08-15  本文已影响60人  乐老师TestPro

前面讲过了Linux基本指令的使用,请参考Linux基本指令详解,接下来我们来学习下Linux的高级指令之文本处理工具。Linux中最为常用的三大文本处理工具是grep、awk、sed,掌握好其用法是很有必要的。

一、grep :grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Linux的grep家族包括grep、egrep和fgrep。

常用选项参数释义如下:

-E:开启扩展(Extend)的正则表达式。

-F:将样式视为固定字符串的列表。

-i:忽略大小写(ignore case)。

-v:反过来(invert),只打印没有匹配的,而匹配的反而不打印。

-n:显示行号。

-w:精确匹配,被匹配的文本是一个完全的单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker。

-c:显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。

-o:只显示被模式匹配到的字符串。

--color:将匹配到的内容以颜色高亮显示。

-A n:显示匹配到的字符串所在的行及其后n行。

-B n:显示匹配到的字符串所在的行及其前n行。

-C n:显示匹配到的字符串所在的行及其前后各n行。

grep也可以结合正则表达式使用,以下是部分正则的写法和释义:

. :任意一个字符。

[abc]:表示匹配一个字符,这个字符必须是abc中的一个。

[a-zA-Z]:表示匹配一个字符,这个字符必须是a-z或A-Z这52个字母中的一个。

[^123]:匹配一个字符,这个字符是除了1、2、3以外的所有字符。

对于一些常用的字符集,系统做了定义:

[A-Za-z]:a到z及A到Z的字符,等价于 [[:alpha:]]

[0-9]:0到9的数字,等价于[[:digit:]]

[A-Za-z0-9]:a到z及A到Z的字符及0到9的数字,等价于 [[:alnum:]]

tab,space:空白字符,等价于 [[:space:]]

[A-Z]:等价于[[:upper:]]

[a-z]:等价于[[:lower:]]

标点符号:[[:punct:]]

匹配次数:

\{m,n\} :匹配其前面出现的字符至少m次,至多n次。

\? :匹配其前面出现的内容0次或1次,等价于\{0,1\}。

* :匹配其前面出现的内容任意次,等价于\{0,\},所以 ".*" 表述任意字符任意次,即无论什么内容全部匹配。

位置锚定:

^ :锚定行首

$ :锚定行尾。技巧:"^$"用于匹配空白行。

\b或\<:锚定单词的词首。如"\blike"不会匹配alike,但是会匹配liker

\b或\>:锚定单词的词尾。如"\blike\b"不会匹配alike和liker,只会匹配like

\B :与\b作用相反。

分组及引用:

\(string\) :将string作为一个整体方便后面引用。

\1 :引用第1个左括号及其对应的右括号所匹配的内容。

\2 :引用第2个左括号及其对应的右括号所匹配的内容。

\n :引用第n个左括号及其对应的右括号所匹配的内容。

二、awk: awk文本分析工具awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk内置变量和参数如下:

内置变量:

ARGC:命令行参数个数

ARGV:命令行参数排列

ENVIRON:支持队列中系统环境变量的使用

FILENAME:awk浏览的文件名

FNR:浏览文件的记录数

FS:设置输入域分隔符,等价于命令行-F选项

NF:浏览记录的域的个数

NR:已读的记录数

OFS:输出域分隔符, 默认也是空格,可以设置为其他的 ORS:输出记录分隔符,默认为换行符,即处理结果也是一行一行输出到屏幕

RS:控制记录分隔符

参数选项:

F:指定分隔符

f:调用脚本

v:定义变量

说明:$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。

三、sed工具:sed工具用来分析关键字的使用、统计等,还可以将数据进行取代、删除、新增、选取特定行等功能。sed的常用参数选项和命常用令如下:

常用参数选项:

-n:取消默认的输出,使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来

-e:进行多项编辑,即对输入行应用多条sed命令时使用. 直接在指令列模式上进行 sed 的动作编辑

-f:指定sed脚本的文件名. 直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作

-r:sed 的动作支援的是延伸型正则表达式的语法。(预设是基础正则表达式语法)

-i:直接修改读取的文件内容,而不是由屏幕输出。危险操作     

常用命令:

a:新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)

c:取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行

d:删除,因为是删除,所以 d 后面通常不接任何内容

i:插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)

p:列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起用

s:取代,可以直接进行替换的工作。通常这个 s 的动作可以搭配正则表达式。例如 1,20s/old/new/g

扫描↓领取Linux的镜像文件,Ubuntu、CentOS和vmware安装包

上一篇下一篇

猜你喜欢

热点阅读