shell脚本知识(三) 正则表达式 grep sed awk

 

1、正则表达式


匹配给定文本中的所有单词:( ?[a-zA-Z]+ ?) ?用于匹配单词前后可能出现的空格。

匹配IP地址:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}   括号分割的4个整数。

 

2、grep “mach_text”  file1 file2 file3….

递归搜索文件: grep “text” ./ -Rn 

 

3、cut  将文本按列进切分。可以指定分割每列的定界符。在cut术语中,每列一个字段。

cut –f 2,3 filename 显示第2列和第3列。

打印出除第3列之外所有列: cut –f3 –complement filename

 

3、sed 

流编辑器。 可以替换给定文本中的字符串。

sed ‘s/pattern/replace_string/’ file   使用 –i 可以将替换结果应用于源文件。此命令只是替换每一行中第一处符合样式的内容,如果要替换所有内容,需要在命令尾部加上g:

 sed ‘s/pattern/replace_string/g’file

移除空白行: sed ‘/^$/d’file

已匹配字符串标记&: echo thisis an example | sed ‘s/\w\+/[&]g’

                    [this][is] [an] [example]

正则表达式\w\+ 匹配每一个单词,然后用[&]替换它。&对应于之前所匹配的单词。

 

4、awk

可以对列和行进行操作。

awk ‘ BEGIN{ commands } pattern { commands }  END{ commands }’  filename

一个awk脚本通常由3部分组成:BEGIN语句块, END语句块和能够使用模式匹配的通用语句块。3个部分都是可选的。

(1)执行BEGIN{commands }语句块中的语句。

(2)从文件或stdin中读取一行,然后执行pattern{commands }。重复这个过程,直到文件全部被读取完毕。

(3)当读至输入流(inputstream)末尾时,执行END{  commands }语句块。

 

echo –e “line1\nline2” | awk ‘BEGIN{ print “Start” } { print } END{print “End” }’

 

特殊变量:

NR:表示记录数量(number of records),在执行过程中对应于当前行号。

NF:表示字段数量(number of fields),在执行过程中对应于当期那的字段数。

$0:这个变量包含执行过程中当前行的文本内容。

$1:包含第一个字段的文本内容。

awk '{ print $5 }'  filename  打印第五列。

打印当前目录下的个文件的权限和文件名:

 awk '{print $1 ":"$9}'
total:
-rw-rw-r--.:BSDmakefile
drwxrwxr-x.:config
-rw-rw-r--.:Config.in
drwxrwxr-x.:docs
drwxrwxr-x.:feeds
-rw-rw-r--.:feeds.conf.default


在文件中移除包含某个单词的句子:

sed ' s/ [^.]*mobile phone[^.]*\ . //g ' filename

移除包含单词“mobile phone”的句子。

表达时中格式为:‘s/匹配样本/替代字符串/g’     [^.]* 可以匹配除句点之外的任何字符的组合。每一个匹配句子均被//替换(/与/之间没有任何内容)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值