grep、sed和awk基本用法汇总

grep、sed、awk基本用法汇总:

grep(全局正则表达式版本)

    允许对文本文件进行模式查找;如果找到匹配模式,grep打印包含模式的所有行。

例: grep  “abc”  file     查找file文件中包含”abc”的所有字符串,并打印出来

常用的grep选项有:

-c 只输出匹配行的计数

-i 不区分大小写(只适用于单字符)
-h 查询多文件时不显示文件名

-l 查询多文件时只输出包含匹配字符的文件名

-n 显示匹配行及行号

-s 不显示不存在或无匹配文本的错误信息

-v 显示不包含匹配文本的所有行

 

sed

1、基本sed编程:

1)插入文本

2)修改文本

3)删除文本

    sed  “1d”  file       删除file文件中第一行

    sed  “1,3d”  file     删除第一到第三行

    sed  “$d”  file       删除最后一行

    sed  “/Name/d”  file  删除包含文本 “Name” 的行

4)替换文本

    替换命令用替换模式替换指定模式,格式为:

sed s/ pattern–to–find / replacement–pattern / [g p w n]

s选项通知sed这是一个替换操作,查询pattern–to–find,成功后用replacement – pattern替换它

替换选项如下:

g   缺省情况下只替换第一次出现模式,使用g选项替换全局所有出现模式

p   缺省sed将所有被替换行写入标准输出,加p选项将使-n选项无效。-n选项不打印输出结果

w   文件名  使用此选项将输出定向到一个文件

例:sed     “s/abc/bcd/w sed.out“  file (将abc替换为bcd的替换结果写入文件sed.out)

 

2、使用替换修改字符串 :

    如果要附加或修改一个字符串,可以使用&命令,&命令保存发现模式以便重新调用它,然后把它放在替换字符串里面。

例:sed –n “s/abc/”bcd” &/p”  file

 

3、将sed结果写入文件命令

sed  “1, 2  w  filedt”  file  文件file输出到屏幕,第1、2行输出文件filedt

4、从文件中读文本

    处理文件时,sed允许从另一个文件中读文件,并将其文本附加在当前文件。此命令放在模式匹配行后,格式:

例:sed  “/company./r  file1”  file

    将file1文件内容附加到file文件中,是在模式匹配行/company./后放置附加文本。

 

awk

    在命令调用awk时,awk脚本由各种操作和模式组成。

    如果设置了 –F选项,则awk每次读一条记录或一行,并使用指定的分隔符分隔指定域;但如果未设置 –F选项,awk则以空格未域分隔符。

 

1、域和记录

awk执行时,浏览域标记为$1,$2…$n(表示参照第1,…第n域),而$0,表示所有域

    为打印一个域或所有域,使用print命令,这是一个awk动作。

1) 保存awk输出

有两种方式保存shell提示符下awk脚本的输出

第1种方法:重定向

例:$ awk “{print $0}” file1 > file

将文件file1内容直接输出到文件file中,但不输出到屏幕

第二种方法:使用tee命令

例:$ awk “{print $0}” file1 | tee file     输出重定向到文件file,同时输出到屏幕

2) 打印报告头

例:$ awk ‘begin {print “Name Belt\n----------”}’ {print $1 ”\t “ $4}  file

 

2、条件操作符

1)匹配

    为使一域号匹配正则表达式,使用符合‘~’后紧跟正则表达式,也可以用 if语句,awk中if后面的条件用()括起来。

例:$ awk “{if($4~/Brown/) print $0}”  file

也可以简化为:$ awk “$0 ~ /Brown/”  file

打印文件file第4域包含Brown的匹配记录行

2) 精确匹配 (使用等号 ==)

例:$ awk ‘$4==”Brown-3” {print $0}’  file

打印文件file第4域等于Brown-3的匹配记录行

3) 不匹配 (使用!~)

例:$ awk “$0 !~ /Brown/”  file

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值