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’     [^.]* 可以匹配除句点之外的任何字符的组合。每一个匹配句子均被//替换(/与/之间没有任何内容)

时间: 2024-11-05 17:30:09

shell脚本知识(三) 正则表达式 grep sed awk的相关文章

Shell脚本 (四)正则表达式 grep sed awk 工具

正则表达式定义正则表达式,又称正规表达式.常规表达式是使用单个字符串来描述.匹配一系列符合某个句法规则的字符串·正则表达式组成普通字符大小写字母.数字.标点符号及一些其他符号元字符在正则表达式中具有特殊意义的专用字符·基础正则表达式示例查找特定字符利用中括号[]来查找集合字符查找行首^与行尾字符$查找任意一个字符.与重复字符查找连续字符范围{}·基础正则表达式的常见元字符^.$...\..[ ].[^ ].[n1-n2].{n}.{n,}.{n,m}·####查找特定字符####n--表示显示行

shell脚本编程之正则表达式(二)(扩展正则表达式、sed)

shell脚本编程之正则表达式(二) 一.前言 ? 本文主要是对扩展正则表达式的介绍,同时,继续按照上篇文章的风格介绍sed文本处理工具,sed作为shell编程中"三剑客"之一,在对文本处理上有巨大作用.关于正则概念以及grep命令结合正则使用的案例请参照:https://blog.51cto.com/14557673/2455588 二.扩展正则表达式 ? 扩展正则表达式主要是为了简化指令而产出的.例如,使用基础正则表达式查询文件中空白行与行首为#号之外的行(一般用于查看生效的配置

grep,sed,awk与简单正则表达式应用

grep,sed,awk与简单正则表达式应用 这里使用的测试文件是linux /etc/passwd文件,最好是复制一份进行练习,方式对文件内容造成损坏.感觉还是要多练习才能很好的使用,习题这里就不贴了,网上一找一大把. grep:   -o 用作计算出现多少次字段  -c 打印符合要求的行数  -n 在输出符合要求的行的同时也打印行号  -v 打印不符合要求的行  -A 后跟一个数字 ps -A2表示打印符合要求的行及下面两行  -B 后跟一个数字 ps -B2表示打印符合要求的行及上面两行 

LINUX 下 find grep sed awk 的常见基本用法特点

LINUX 下 find grep sed awk 的常见基本用法特点 只为让自己具有更高的水准,这就开始了长达6个月的小白进阶路! 这几天学习linux基础命令有点犯蒙,尤其是对文件查找这块.所有我想把一些我觉得常用的实用的参数项总结下来,大神勿喷哈... 不到之处请大家指教,小女子在此谢过了. 一.find:命令用于查找文件系统中指定的文件,其命令格式为: 1.find pathname -options [ -print  -exec  -ok ... ] (1)find 命令的参数: p

Shell脚本应用之正则表达式详解

通过Shell脚本应用(一).Shell脚本应用(二).Shell脚本应用(三)这几篇博文,我们已经掌握了Shell脚本的编写规则和各种语句的具体应用,但是实际生产环境中,Shell脚本通常与正则表达式.文本处理工具结合使用.我们就来认识一下"正则表达式(RE)". 正则表达式概述 1.正则表达式的定义 正则表达式又称正规表达式.常规表达式.在代码中常简写为regex.regexp或RE.正则表达式是使用单个字符串来描述,匹配一系列符合某个句法规则的字符串.简单的说,正则表达式是一种匹

python 全栈 linux基础 (部分)正则表达式 grep sed

/etc/profile /etc/bashrc  .变量添加到shell环境中,永久生效. /root/.bashrc /root/.bash_profile 正则表达式 定义:正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.(被命令所解释) 三种文本处理工具/命令:grep sed awk grep(过滤) 参数 -n  :显示行号 -o  :只显示匹配的内容 -q  :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容 -l

find grep sed awk 详解

find :查找文件系统中指定的文件.可以按文件名(-name)  权限(-perm) 归属人 查找. find   要查找文件的路径   表达式 *通配符  可以添加在文件名的任意位置 常用的例子(具体可参照 find --help): find . -name 1.txt             在当前目录以及子目录下查找文件 1.txt find /tmp -name 1.txt       在/tmp目录以及子目录下查找文件 1.txt find /bin/ -perm 4755 | x

shell脚本第三篇——监控主机的磁盘空间,当使用空间超过90%就通过发mail来发警告

shell脚本第三篇--监控主机的磁盘空间,当使用空间超过90%就通过发mail来发警告 #!/bin/bash#monitor available disk space#提取本服务器的IP地址信息 IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` SPACE=` df -hP | awk '{print int($5)}'`if [ $SPACE

[CentOS 7系列]grep/sed/awk实战

最近准备和CoreSite - Any2 California接入商建立网络BGP邻居关系.从peeringdb (https://www.peeringdb.com/ix/142)上找到了所有接入商的信息,但是转移信息到本地不是很方便,需要进行多次文本调整,耗时较长.作为萌新,立马就想到近期学习的grep/sed/awk工具.于是就尝试处理数据. 1.下载页面内容 curl https://www.peeringdb.com/ix/142 > peering 将页面内容存入peering文件