文本三剑客.基础

目录

前言

1.grep命令

1.1命令介绍

1.2常用参数

练习

2.sed命令

2.1命令介绍

2.2常用选项

练习

3.awk命令 

3.1命令介绍

3.2常用选项

3.3语法格式

3.4变量

3.4.1内置变量

3.4.2自定义变量

3.5printf命令

3.5.1命令格式

3.5.2格式符

3.5.3修饰符

3.6操作符

3.6.1模式匹配符

3.6.2逻辑操作符(与&& ,或|| ,非!)

3.6.3条件表达式(三目表达式)*三目运算符 (表达式1)?(表达式2):(表达式3),计算方法是这样的:表达式1是一个逻辑表达式,如果其值为true,则整个表达式的值为表达式2的值,否则为表达式3的值


前言

这里将介绍所谓文本三剑客的基础知识,带大家简单了解一下操作文本的基本工具命令的使用方法,包括grep、sed、awk,希望对大家有一点帮助

1.grep命令

1.1命令介绍

grep全称是Global Regular Expression Print,是一种强大的文本搜索工具且具备显示结果的效果 ,表示全局正则表达式版本,它的使用权限是所有用户。grep还可以应用于shell脚本当中。

1.2常用参数

参数使用格式作用
A

grep -A1 aaa test

显示第一行符合条件aaa的那一列之外,并显示该行之后的内容,指定查询
Bgrep -B2 bbb test显示第2行符合条件bbb的那一列之外,并显示该行之前的内容,指定查询
Cgrep -C3 AAA test显示第3行符合条件AAA的那一列之外,并显示该行之前之后的内容,指定查询
cgrep -c aaa test统计匹配到aaa的总行数
egrep -e aaa -e BB test多个匹配条件
fgrep -f a.txt test比对两个文件中包含值
igrep -i aa test忽略字符大小写的差别
ngrep -n aaa test显示匹配的行号
qgrep -q aa test静默模式,不输出任何信息
vgrep -v aa test除了,反向
wgrep -w aaaaa test匹配整个单词
  • 练习

 

2.sed命令

2.1命令介绍

sed 是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace ),接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。如果没有使诸如‘D’ 的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出或-i

2.2常用选项

命令格式: sed` `[选项] ``'[地址定界] command'` `file``
选项作用
n不自动打印,只打印匹配到的行
e多点编辑
f把脚本写到文件当中,在执行sed时-f 指定文件路径
r支持扩展的正则表达式
i直接将处理的结果写入文件
i.bak在将处理的结果写入文件之前备份一份
地址定界作用
不给地址

对全文进行处理

单地址

#: 指定的行 /pattern/:被此处模式所能够匹配到的每一行

地址范围

,

,+

/pat1/,/pat2/

,/pat1/

~:步进

​​​​​​​sed -n '1~2p' 只打印奇数行

sed -n '2~2p' 只打印偶数行

command作用
d删除行,因为是删除,所以 d 后面通常不接任何参数,直接删除地址表示的行
p将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
a

指定行后面追加文本,支持使用\n实现多行追加

i在行前面插入文本,支持使用\n实现多行追加
c替换行为单行或多行文本,支持使用\n实现多行追加
w保存模式匹配的行至指定文件
r读取指定文件的文本至pattern中匹配到的行后
=为pattern中的行打印行号
!

模式空间中匹配行取反处理

s替换,可以直接进行替换的工作,通常这个 s 的动作可以搭配正规s@@@
h把模式空间中的内容覆盖至保持空间中
H把模式空间中的内容追加至保持空间中
g从保持空间取出数据覆盖至模式空间
G从保持空间取出内容追加至模式空间
x把模式空间中的内容与保持空间中的内容进行互换
n读取匹配到的行的下一行覆盖至模式空间
N读取匹配到的行的下一行追加至模式空间
d删除模式空间中的行
D删除当前模式空间开端至\n 的内容,放弃之后的命令,但是对剩余模式空间重新执行sed
s替换附加命令
/s/a/A/g加g表示行内全局替换,意思将pattern中匹配的a替换为A
\l把下个字符转换成小写
\L把替换字母转换成小写,直到\U或\E出现
\u把下个字符转换成大写
\U把替换字母转换成大写,直到\L或\E出现
\E停止以\L或\U开始的大小写转换
  • 练习

3.awk命令 

3.1命令介绍

awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。 它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。awk其实不仅仅是工具软件,还是一种编程语言。

3.2常用选项

  • -F fs:fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:

  • -v var=value:赋值一个用户定义变量,将外部变量传递给awk

  • -f scripfile:从脚本文件中读取awk命令

3.3语法格式

 awk [选项] ‘条件{动作} 条件{动作} ... ...’ 文件名

3.4变量

内置和自定义变量,每个变量前加 -v 命令选项

3.4.1内置变量

  • FS :输入字段分隔符,默认为空白字符

  • OFS :输出字段分隔符,默认为空白字符

  • RS :输入记录分隔符,指定输入时的换行符,原换行符仍有效

  • ORS :输出记录分隔符,输出时用指定符号代替换行符

  • NF :字段数量,共有多少字段, $NF引用最后一列,$(NF-1)引用倒数第2列

  • NR :行号,后可跟多个文件,第二个文件行号继续从第一个文件最后行号开始

  • FNR :各文件分别计行号,后跟一个文件和NR一样,跟多个文件,第二个文件行号从1开始

  • FILENAME :当前文件名

  • ARGC :命令行参数的个数

  • ARGV :数组,保存的是命令行所给定的各参数,查看参数

3.4.2自定义变量

(1)先定义变量,后执行动作print

(2)在执行动作print前、后定义变量  

(3)在脚本程序中直接定义

3.5printf命令

3.5.1命令格式

{printf "格式",$项1,$项2...}

3.5.2格式符

  • %c: 显示字符的ASCII码

  • %d, %i: 显示十进制整数

  • %e, %E: 显示科学计数法数值

  • %f :显示为浮点数,小数 %5.1f,带整数、小数点、整数共5位,小数1位,不够用空格补上

  • %g, %G :以科学计数法或浮点形式显示数值

  • %s :显示字符串;例:%5s最少5个字符,不够用空格补上,超过5个还继续显示

  • %u :无符号整数

  • %%: 显示% 自身

3.5.3修饰符

  • 数1.数2:第一个数字控制显示的宽度;第二个#数表示小数点后精度,%5.1f

  • -:左对齐(默认右对齐) %-15s

  • +:显示数值的正负符号 %+d

3.6操作符

3.6.1模式匹配符

这里的/dev磁盘字段可以看出有6个,我们只让显示倒数第一或者第二个和磁盘名

3.6.2逻辑操作符(与&& ,或|| ,非!)

3.6.3条件表达式(三目表达式)*三目运算符 (表达式1)?(表达式2):(表达式3),计算方法是这样的:表达式1是一个逻辑表达式,如果其值为true,则整个表达式的值为表达式2的值,否则为表达式3的值

下面的命令表示第三列的值大于等于1000时如果为真结果打印为user,否则就打印root

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值