Linux三剑客grep,sed,awk

grep

grep [OPTION]... PATTERN [FILE]

-r 递归目录

-n 显示行号

-i 忽略大小写

-B, --before-context=NUM  print NUM lines of leading context

-A, --after-context=NUM   print NUM lines of trailing context

-C, --context=NUM         print NUM lines of output context

匹配字符:

. 匹配任意字符

--exclude-dir=.git 排除目录,多个目录--exclude-dir={.git,res,bin}

sed

1、匹配某行然后替换某个字符:

不用grep怎么实现呢?

2、替换某行:3s,只替换第三行,sed -i "3s/#exit/exit/g" $factest,避免在脚本中把自己替换。

3、增加某行:3i,只增加第三行,原第三行向下移动,sed -i "3i exit" test.txt, 插入特殊字符需要转义,比如",$,{},(),|,转义符\需要4个\\\\,且需要前面有字符才能成功这是为何?

awk

awk [POSIX or GNU style options] [--] 'program' file ...

awk [options] 'Parttern{Action}' file

Action指动作,常用的print和printf,作用是格式化完成后进行文本输出。

awk逐行处理,遇回车换行,没有指定分隔符按照默认的空格进行分隔

$0 表示每一行的整行

   awk 'END{print}'  最后一行

$1 表示第一列,$1---n分别表示第n列

$NF 表示最后一列,倒数第二列$(NF-1),NF表示被分隔开后共有几个字段,多个列输出使用逗号隔开后输入会用空格隔开,如果Action中使用空格隔开那么输出之间没有空格隔开

 增加自己的字符拼接,逗号输出隔开,空格不隔开

Parttern模式

两种特殊模式:BEGIN 在文本处理之前进行的操作,END 在文本处理之后进行的操作

分隔符发

输入分隔符,默认是按照空格进行分隔,没有空格时可以设置特定的分隔符,-F指定输入分隔符

使用内置变量FS,-v设置变量的值

输出分隔符,默认是空格,可以指定分隔符,-v OFS='xx'

内置变量

NR显示行号,NR==1输出第一行

小数运算

a=0.114;b=1.852;awk 'BEGIN{print "'$a'" * "'$b'"}'
0.211128
a=0.114;b=1.852;echo "$a $b" | awk '{printf("%.2f",$1*$2)}'
0.21	

保留小数点几位,会有四舍五入的操作需注意,比如0.573设置%.0f会变成1.000

awk学习链接:awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)-朱双印博客

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值