grep 简介
grep 是linux 中最常用的“文本处理工具之一与sed awk 合称为linux中的三剑客!grep 就像你在windows中打开txt文件,使用快捷键“Ctrl+F” 在文本中查找某个字符串一样,可以把grep 理解为字符查找工具grep 的全称为Global search Regular Expression and Print out the line 为全局搜索的意思
grep 基本用法
grep
[OPTIONS] PATTERN
[FILE...]
常用参数
-v:反向查找,显示没有匹配模式的行
-n:显示匹配结果所在行号
-i: 在搜索的时候忽略大小写
-o:只显示符合条件的字符串
-e:实现多个选项的匹配,逻辑or关系
-E:使用扩展正则表达式,在使用 “-E” 选项时,相当于使用 egrep
-w:精确匹配关键字
-c:统计匹配到的行数,注意,是匹配到的总行数
-q: 静默模式,不输出任何信息
-l: 不显示输出的匹配结果,仅显示匹配的文件名
-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
sed 简介
流编辑器,主要用来过滤和替换文本内容
工作原理:
sed是流编辑器,不允许用户与它进行交互操作.sed是以行为单位处理文本内容的.每一次读取一行到内存中,即称之为模式空间(pattern space)默认不修改原文件,如果需要修改需加-i参数sed有模式空间及保持空间(hold sapce),默认打印模式空间中的内容到标准输出sed读取每行的时候会将内容保存至内存中支持正则和扩展正则表达式,除-y选项
sed 基本用法
sed
[选项
] '定址和命令' 处理的文件
常用的选项
-i:将修改直接作用-n:取消默认输出
常用的参数
p:打印
d:删除
s:替换(字符串被替换) g:全局模式,所有匹配的字符串都被替换(不加g默认只替换每行匹配的第一个)
y:变换字符(一一对应)
i:插入(匹配行前)
a:追加(匹配行后)
c:修改(匹配到的整行被修改)
r:从文件读入
w:写入文件
q:找到第一个匹配就退出
awk 简介
awk 是一个优良的文本处理工具。(其名称得自于它的创始人阿尔佛雷德·艾侯、彼得·温伯格和布莱恩·柯林汉姓氏的首个字母)
其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令
awk基本用法
-F 指定分隔符为冒号
语法格式:
awk
-F
'分隔符' '/模式/{操作}' 文件名
awk内置变量
属性 说明
$0 当前记录(作为单个变量)
$1~
$n 当前记录的第n个字段,字段间由FS分隔
FS 输入字段分隔符 默认是空格
NF 当前记录中的字段个数,就是有多少列
NR 已经读出的记录数,就是行号,从1开始
RS 输入的记录他隔符默 认为换行符
OFS 输出字段分隔符 默认也是空格
ORS 输出的记录分隔符,默认为换行符
ARGC 命令行参数个数
ARGV 命令行参数数组
FILENAME 当前输入文件的名字
IGNORECASE 如果为真,则进行忽略大小写的匹配
ARGIND 当前被处理文件的ARGV标志符
CONVFMT 数字转换格式
%.6g
ENVIRON UNIX环境变量
ERRNO UNIX系统错误消息
FIELDWIDTHS 输入字段宽度的空白分隔字符串
FNR 当前记录数
OFMT 数字的输出格式
%.6g
RSTART 被匹配函数匹配的字符串首
RLENGTH 被匹配函数匹配的字符串长度
awk常用变量
NF:表示最后一个字段
[root@localhost ~]
/bin
/bash
/sbin
/nologin
/sbin
/nologin
/sbin
/nologin
/sbin
/nologin
$(NF-1):表示倒数第二个字段
[root@localhost ~]
/root
/bin
/sbin
/var/adm
/var/spool
/lpd
NR:表示当前处理的是第几行
输出第二行
[root@localhost ~]
bin:x:1:1:bin:
/bin:
/sbin
/nologin
三行以后
[root@localhost ~]
adm:x:3:4:adm:
/var/adm:
/sbin
/nologin
lp:x:4:7:
lp:
/var/spool
/lpd:
/sbin
/nologin
sync:x:5:0:sync:
/sbin:
/bin
/sync
shutdown:x:6:0:shutdown:
/sbin:
/sbin
/shutdown
awk内置函数
toupper()用于将字符转为大写【t^ber】
[root@localhost ~]
ROOT
BIN
DAEMON
ADM
LP
tolower()用于将字符串转为小写
[root@localhost ~]
root
bin
daemon
adm
awk if else语句
假如$1==root 打印第一个字段,否则打印第二个字段
root@localhost ~
]
root
x
x
x
x
awk 高级用法BEGIN END
awk
'
BEGIN { actions }
/pattern/ { actions }
/pattern/ { actions }
……….
END { actions }
' filenames
BEGIN 模式:是指 awk 将在读取任何输入行之前立即执行 BEGIN 中指定的动作。END 模式:是指 awk 将在它正式退出前执行 END 中指定的动作