linux三剑客

linux三剑客

Linux通配符

通配符
就是键盘上一些特殊字符,可以实现特殊功能,例如,模糊搜索。
Linux下常用通配符

符号作用
*匹配任意,0个或多个字符,字符串
匹配一个字符,有且只有一个字符
[abcd]匹配abcd中任意一个字符,abcd也可以是不连续任意字符
[a-z]匹配a到z之间任意一个字符,要求连续字符,也可以是连续数字[1-9]
[!abcd]不匹配括号中的任意一个字符,也可以书写[!a-d]
[^abcd]同上,!可以换成^

Linux下特殊通配符

符号作用
[[:upper:]]所有大写字母
[[:lower:]]所有小写字母
[[:alpha:]]所有字母
[[:digit:]]所有数字
[[:alnum:]]所有的字母和数字
[[:space:]]所有空白字符
[[:punct:]]所有标点符号

特殊引号
在linux系统中,单引号,双引号可以用于表示字符串。

名称解释
单引号’ ’所见即所得,强引用,单引号内容会原样输出
双引号" "弱引用,能够识别何种特殊符号,变量,转义符等,等解析后在输出结果
没有引号一般连续字符串,数字,路径可以省略双引号,遇见特殊字符,空格,变量等,必须加上双引号
反引号``常用于引用命令结果,同于$(命令)

其他特殊符号

符号解释
;分号,命令分隔符或结束符
#1.文件中的注释内容 2。root身份提示符
|管道符,传递命令结果给下一个命令
$1.$变量,取出变量的值 2.普通用户身份提示符
\转义字符,将特殊含义的字符还原成普通字符
{}1.生成序列号 2.引用变量作为变量与普通字符的分割

逻辑操作符
逻辑符既可以在linux系统中用,也可以在bash脚本中用。

命令解释
&&前一个命令成功,在执行下一个命令
||前一个命令失败了,在执行下一个命令
1.在bash中取反 2.在vim中强制性 3.历史使命中!ls找出最近一次以ls开头的命令

Linux正则表达式

正则表达式(Regual Expression,REGEXP)由一类特殊字符以及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或通配的功能。
分两类:

  • 基本正则表达式:BRE
  • 扩展正则表达式:ERE

基本正则表达式BRE集合

  • 匹配字符
  • 匹配次数
  • 位置锚定
符号作用
^尖角号,用于模式的最左侧,如"^good",匹配以good单词开头的行
$美元符,用于模式的最右侧,如"good$",匹配以good结尾的行
^$组合符,表示空行
.匹配任意一个且只有一个字符,不能匹配空行
*匹配前一个字符(连续出现)0次或1次以上,重复0次代表空,即匹配所有内容
.*组合符,匹配任意长度的任意字符
^.*组合符,匹配以任意多字符开头的内容
.*$组合符,匹配以任意多个字符结尾的内容
[abc]匹配[]集合内的任意一个字符
[^abc]匹配除了^后面的任意字符,^表示对[abc]的取反
<\pattern>匹配完整的内容
< 或 >定位单词的左侧和右侧

扩展的正则表达式ERE

字符作用
+匹配前一个字符1次或多次,前面的字符至少出现1次
[: /]+匹配括号内的":“或者”/"字符一次或多次
匹配前一个字符0次或1次,前面的字符可有可无
|表示或者,同时过滤多个字符串
()分组,被括起来的内容表示一个整体
a{n,m}匹配前一个字符最少n次,最多m次
a{n,}匹配前一个字符最少n次
a{n}匹配前一个字符正好n次
a{,m}匹配前一个字符最多m次

Tips

grep命令需要使用参数 -E即可以支持正则表达式
egrep不推荐使用,使用grep -E替代
grep不加参数,得在特殊字符下面加""反斜杠,识别为正则

三大命令(三剑客)

grep

作用:文本搜索工具,根据用户指定的模式(过滤条件),对目标文本逐行进行匹配检查,打印匹配到的行

语法:
grep [options] [pattern] file
命令 参数  匹配模式 文件数据

grep命令里的匹配模式就是你想要找的东西,可以是普通的文字符号,也可以是正则表达式

参数选项解释说明
-v排除匹配结果
-n显示匹配行与行号
-i不区分大小写
-c只统计匹配的行数
-E使用egrep命令
–color=auto为grep过滤结果添加颜色
-w只匹配过滤的单词
-o只输出匹配的内容

sed

注意sed和awk使用单引号,双引号有特殊解释
sed是Stream Editor(字符流编辑器)的缩写,简称流编辑器。它是操作,过滤和转换文本内容的强大工具。常用的功能包括结合正则表达式对文件实现快速的增删改查,其中查询的功能中最常用的两大功能是过滤(过滤指定字符串),取行(取出指定行)。

语法:
sed [选项] [sed内置命令字符] [输入文件]

选项:

参数选项解释
-n取消默认sed的输出,常与sed内置命令p一起用
-i直接将修改结果写入文件,不用-i,sed修改的是内存数据
-e多次编辑,不需要管道符了
-r支持正则扩展

sed的内置命令字符用于对文件进行不同的操作功能,如对文件的增删改查。
sed常用内置命令字符:

sed的内置命令字符解释
aappend,对文本追加,在指定行后面添加一行/多行文本
ddelete,删除匹配行
iinsert,在指定行前添加一行/多行文本
pprint,打印匹配行的内容,通常p与-n一起用
s/正则/替换内容/g匹配正则内容,然后替换内容(支持正则),结尾g代表全局匹配

sed匹配范围

范围解释
空地址全文处理
单地址指定文件某一行
/pattern/被模式匹配到的每一行
范围区间10,20 十到二十行,10,+5第十行向下5行,/pattern1/,/pattern2/
步长1~2,表示1,3,5,7,9行,2~2,表示2,4,6,8,10行

awk

awk是一个强大的linux命令,有强大的文本格式化的能力,好比将一些文本数据格式化成专业的excel表的样式。awk早期在Unix上实现,我们用的awk是gawk,是GNU awk的意思,awk更是一门编程语言,支持条件判断,数组,循环等功能。

语法:
awk [option] ‘pattern{action}’ file…
awk  参数  条件动作  文件

  • Action指的是动作,awk擅长文本格式化,且输出格式化后的结果,因此最常用的动作就是print和printf

awk是按行处理文件,一行处理完毕,处理下一行,根据用户指定的分割符去工作,没有指定则默认空格。

awk内置变量

内置变量解释
$n指定分隔符后,当前记录的第n个字段
$0完整的输入记录
FS字段分隔符,默认为空格
OFS输出字段分隔符
RS输入记录分隔符(输入换行符),指定输入时的换行符
ORS输出记录分隔符(输出换行符),指定输出时的换行符
NF(Number of fields)分割后,当前行一共有多少个字段,即列数
NR(Number of records)当前处理文本行的行号
FNR各文件分别计数的行号
FILENAME当前文件名
ARGC命令行参数的个数
ARGV数组,保存的是命令行所给定的各参数
更多的内置变量可以man手册man awk
  • awk必须外层单引号,内层双引号,内置变量$1,$2都不得添加双引号,否则会识别为文本,尽量别加引号。

awk参数

参数解释
-F指定分割字段符
-v定义或修改一个awk内部的变量
-f从脚本文件中读取awk命令

awk模式的关系运算符

关系运算符解释示例
<小于x<y
<=小于等于x<=y
==等于x==y
!=不等于x!=y
>=大于等于x>=y
>大于x>y
~匹配正则x~/正则/
!~不匹配正则x!~/正则/

awk格式化

  • print:{print}只能对文本简单的输出,并不能美化或修改格式,默认添加换行符。
  • printf:{printf}可以对文本进行格式化的输出,规则和c语言中printf一样,需要自己添加换行符

awk模式pattern
awk是按行来处理文本,上面讲解了print动作,现在讲解特殊的pattern:BEGIN和END

  • BEGIN模式是处理文本之前需要执行的操作
  • END模式是处理完所有行之后执行的操作

awk命令使用正则表达式,必须把正则表达式放入"//"双斜杠中

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值