grep sed awk三剑客

sed

 sed (stream editor) 命令的作用是利用脚本来处理文本文件。

语法:
sed [-hnV][-e<script>][-f<script 文件 >][ 文本文件 ]
-e<script>或--expression=<script> 以选项中指定的 script 来处理输入的文本文件,这个-e
可以省略,直接写表达式。
-f<script文件>或--file=<script文件>以选项中指定的 script 文件来处理输入的文本文件。
-h或--help显示帮助。
-n 或 --quiet 或 --silent 仅显示 script 处理后的结果。
-V 或 --version 显示版本信息。
动作说明:
a:新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c:取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d:删除,因为是删除啊,所以 d 后面通常不接任何内容;
i:插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p:打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行;
s:取代,通常这个 s 的动作可以搭配正规表示法,例如 1,20s/old/new/g
关于 s 还有很多用法,还是回到第一个文件,比如可以用 /^/ /$/ 分别代表行
首和行尾
这个其实就是正则表达式的语法,其他类似语法还有: ^ 表示一行的开头。如:/^#/ 以#开头的匹配。
$ 表示一行的结尾。如:/}$/ 以}结尾的匹配。
\< 表示词首。 如:`\<abc 表示以 abc 为首的詞。This is a cat abcTest abcQQQ
\> 表示词尾。 如:abc\> 表示以 abc 結尾的詞。
. 表示任何单个字符。
* 表示某个字符出现了0次或多次。
[ ] 字符集合。 如:[abc] 表示匹配a或b或c,还有 [a-zA-Z] 表示匹配所有的26个字符。如
果其中有^表示反,如 [^a] 表示非a的字符

 -e 命令可以执行多次匹配,相当于顺序依次执行两个 sed 命令:

 sed -e 's/Linux/Windows/g' -e 's/Windows/Mac OS/g' test

 写入文件

想要保存到原文件的话可以用 -i 来保存到文件

sed -i 's/Linux/Windows/g' test

 awk

 语法

awk [ 选项参数 ] 'awk script' var =value file (s)
 
awk [ 选项参数 ] -f scriptfile var =value file (s)
参数说明:
-F fs or --field-separator fs 指定输入文件折分隔符,fs是一个字符串或者是一个正则表 达式,如-F:。
  -v var=value or --asign var=value 赋值一个用户定义变量。
  -f scripfile or --file scriptfile 从脚本文件中读取awk命令。
变量
awk 中有不少内置的变量,比如 $NF 代表的是分割后的字段数量,相当于取最后一个。
NF: number filed 当前行分割后的字段个数。打印的时候,是取出最后一列
NR: number row 表示当前第几行
其他的内置变量还有:
FILENAME:当前文件名
FS:字段分隔符,默认是空格和制表符。
RS:行分隔符,用于分割每一行,默认是换行符。
OFS:输出字段的分隔符,用于打印时分隔字段,默认为空格。
ORS:输出记录的分隔符,用于打印时分隔记录,默认为换行符。
OFMT:数字输出的格式,默认为%.6g。

 

函数
awk还提供了一些内置函数,方便对原始数据的处理。主要如下:
toupper():字符转为大写。
tolower():字符转为小写。
length():返回字符串长度。
substr():返回子字符串。
sin():正弦。
cos():余弦。
sqrt():平方根。
rand():随机数

条件

awk 允许指定输出条件,只输出符合条件的行。输出条件要写在动作的前面:
awk ' 条件 动作 ' 文件名
if语句
awk 提供了 if 结构,用于编写复杂的条件。

 BEGIN语句/END语句

 awk 'BEGIN{ commands } pattern{ commands } END{ commands }'

 从文件中读取: awk -f {awk脚本} {文件名}

grep

 命令的基本格式:

 grep [option] pattern file

对于这个命令我们经常使用的一个场景如下:  

 ps -ef|grep xxxx

grep 常用的参数如下:
-A<行数 x>:除了显示符合范本样式的那一列之外,并显示该行之后的 x 行内容。
-B<行数 x>:除了显示符合样式的那一行之外,并显示该行之前的 x 行内容。
-C<行数 x>:除了显示符合样式的那一行之外,并显示该行之前后的 x 行内容。
-c:统计匹配的行数
-e :实现多个选项间的逻辑or 关系
-E:扩展的正则表达式
-f 文件名:从文件获取 PATTERN 匹配
-F :相当于fgrep
-i --ignore-case #忽略字符大小写的差别。
-n:显示匹配的行号
-o:仅显示匹配到的字符串
-q: 静默模式,不输出任何信息
-s:不显示错误信息。
-v:显示不被 pattern 匹配到的行,相当于[^] 反向匹配
-w :匹配 整个单词

 

grep egrep fgrep对比

grep可以使用基本正则表达式进行内容查找匹配
egrep可以使用扩展的正则表达式进行内容查找匹配
fgrep只能查找固定内容,无法使用正则进行匹配
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值