grep,sed,awk与简单正则表达式应用(代码片段)

author author     2022-10-30     633

关键词:

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

这里使用的测试文件是linux /etc/passwd文件,最好是复制一份进行练习,方式对文件内容造成损坏。感觉还是要多练习才能很好的使用,习题这里就不贴了,网上一找一大把。


grep:

  -o 用作计算出现多少次字段
  -c 打印符合要求的行数
  -n 在输出符合要求的行的同时也打印行号
  -v 打印不符合要求的行
  -A 后跟一个数字 ps -A2表示打印符合要求的行及下面两行
  -B 后跟一个数字 ps -B2表示打印符合要求的行及上面两行
  -C 后跟一个数字 ps -C2 表示打印符合要求的行及上下各两行
  -r 会把目录下面的所有文件全部遍历

过滤出带有某个关键字的行并且输出行号 grep -n ‘root‘ passwd
过滤出不带有某个关键字的行并且输出行号 grep -n -v ‘root‘ passwd
过滤出所有包含数字的行并且输出行号 grep -n ‘[0-9]‘ passwd
过滤出所有不带有数字的行  grep -n -v ‘[0-9]‘ passwd
去除所有以#号开头的行:grep -n -v ‘^#‘ passwd
去除所有以#号和空行:grep -v ‘^#‘|grep -v ‘^$‘
过滤出以非数字开头的行 grep ‘^[^0-9]‘ 1.txt
过滤出所有以英文字母开头的行 grep ‘[a-zA-Z]‘ passwd
过滤任意一个或多个字符 grep ‘r.o‘ passwd;grep ‘r*t‘ passwd; grep ‘r.*t‘ passwd

^一般表示开头,但是当在[^]时候会表示排除字符)
[^a]表示“匹配除了a的任意字符”。
[^a-zA-Z0-9]表示“找到一个非字母也非数字的字符”。
[\^abc]表示“找到一个插入符或者a或者b或者c”。
[^\^]表示“找到除了插入符外的任意字符。

* 0个或多个*前面的字符
. 任意一个字符(包括多个字符)
? 表示0个或一个?前面的字符
+ 表示一个或多个+前面的字符
.*表示任意字符不限制数量

注意:

+ ? | grep不支持(要使用-E选项),egrep才支持
(oo)* 0个或多个oo
(oo)1,2 表示大于1次或2次

sed:(-n和p组合,其他不用)

打印指定行sed ‘10p‘ -n passwd; sed ‘1,4p‘ -n passwd; sed ‘5,$p‘  -n 1.txt
打印包含某个字符串的行 sed -n ‘/root/p‘ passwd 可以使用^ . * $
-e 可以实现同时进行多个任务 sed -e ‘/root/p‘ -e ‘/body/p‘ -n passwd
也可以用;隔开 实现 sed ‘/root/p‘; /body/p‘ -n passwd
删除行 sed ‘/root/d’  passwd; sed ‘1d‘ passwd; sed ‘1,10d‘ passwd
替换 sed ‘1,2s/ot/to/g‘ passwd 其中s是替换的意思,g是全局替换,否则只是替换一次,/也可以为#,@等
删除所有的数字 sed ‘s/[0-9]//g‘ passwd
删除所有的非数字 sed ‘/[^0-9]//g‘ passwd
调换2个字符串的位置 head -n2 passwd | sed ‘s/\(root\)\(.*\)\(bash\)/\3\2\1/‘
直接修改文件内容 sed -i ‘s/ot/to/g‘ passwd
sed ‘s/[a-z]/\u&/g‘ passwd将小写字母全局转换为大写字母
sed ‘s/[A-Z]/\l&g‘ passwd 将大写字母全部转换为小写字母

awk:

截取文档中的某段 awk -F ‘:‘ ‘print $1‘ passwd
也可以使用自定义字符串连接每个段 awk -F ‘:‘ ‘print $1"#"$2"#"$3"#"$4‘ passwd
匹配字符或者字符串 awk ‘/oo/‘ passwd
针对某个段匹配 awk -F ‘:‘ ‘$1~/oo/‘ passwd
多次匹配 awk -F ‘:‘ ‘/root/ print $1,$3;$1 ~/test/;$3 ~/20/‘ passwd
条件操作符: == > < != >= <= 
    awk -F ‘:‘ ‘$3==0‘ passwd
    awk -F ‘:‘ ‘$3>500‘ passwd
    awk -F ‘:‘ ‘$7!="/sbin/nologin"‘ passwd
    awk -F ‘:‘ ‘$3<$4‘ passwd
    awk -F ‘:‘ ‘$3>$5 && $3<$7‘ passwd
    awk -F ‘:‘ ‘$3>$4 || $7="/bin/bash"‘ passwd

awk内置变量 NF(段数) NR(行数)
    head -n3 1.txt | awk -F ‘:‘ ‘print NF‘
    head -n3 1.txt | awk -F ‘:‘ ‘print $NF‘ 显示最后一段
    head -n3 1.txt | awk -F ‘:‘ ‘print NR‘ 显示行数
    打印20行之后的行 awk ‘NR>20‘ passwd
    awk -F ‘:‘ ‘NR>20 && $1~/ssh/‘ passwd
    更改某个字段的值awk -F ‘:‘ ‘$1="root"‘ passwd
    数学计算,把第三段和第四段的值相加,并且赋予第七段
        awk -F ‘:‘ ‘$7=$3+$4;print $0‘ passwd
    计算第三段的总和 awk -F ‘:‘ ‘(tot=tot+$3); END print tot‘ passwd
    awk中也可以使用if关键词 awk -F ‘:‘ ‘if($1=="root")print $0‘ passwd

shell脚本应用正则表达式grep,sed,awk,的应用

 准备测试文件从test.txt文件中查找出特定字符“the”所在的位置查找不包含“the”字符的行同时查找到“shirt”与“short”这两个字符串查找包含重复单个字符“oo”查找“oo“前面不是”w“的字符串查找“oo”前面不存在小写字... 查看详情

shell❀三剑客-grep+sed+awk(代码片段)

...,即文本搜索工具;grep:支持使用基本正则表达式;egrep:支持使用扩展正则表达式;fgrep:不支持使用正则表达式;#给grep家族加上特定 查看详情

awk sed grep  正则表达式

做事要有耐心。虚心接受建议,你确实有很多缺点。就算进步慢,也不可以停止前进的脚步。AWKawk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把... 查看详情

正则表达式 - grep、sed、awk - 处理大型文本文件

】正则表达式-grep、sed、awk-处理大型文本文件【英文标题】:regularexpression-grep,sed,awk-processinglargetextfile【发布时间】:2021-08-0603:42:26【问题描述】:我一直在使用文本编辑器来完成我的正则表达式工作。它工作得很好,但现在我... 查看详情

awk,grep,sed三剑客(代码片段)

想学好“三剑客”最基本还是正则表达式的熟练正则表达式全集日志的格式2018/10/0323:59:14.944adapter.go:353:[warning][SLOW_QUERY]cost_time:111.420169mssucc:trueconnection_id:0txn_start_ts:403375431254540289database:table_ids:[21]index_ids 查看详情

linux三大文件处理工具(grep/sed/awk)(代码片段)

...。。) grep(关键字:截取) 文本搜集工具,结合正则表达式非常强大主要参数[]-c:只输出匹配的行-I:不区分大小写-h:查询多文件时不显示文件名-l:查询多文件时,只输出包含匹配字 查看详情

linux正则表达式与通配符

参考技术A正则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容。正则表... 查看详情

正则表达式学习之grep,sed和awk

  正则表达式是用于描述字符排列和匹配模式的一种语法,它主要用于字符串的模式分割、匹配、查找以及替换操作。  描述一个正则表达式需要字符类、数量限定符、位置限定符。规定一些特殊语法表示字符类,数量限定... 查看详情

awk的基本用法(代码片段)

...,awk1.grep系:基于PATTERN进行文本过滤grep:支持基本的正则表达式egrep:支持基本的和扩展的正则表达式fgrep:不支持正则表达式,纯文本2.sed:流编辑器,逐行编辑器;模式空间保持空间3.awk:报告生成器;格式化文档输出;也是... 查看详情

linux与bash:2.linux终端命令之三剑客命令(grep,sed,awk)(代码片段)

...解(1)grep的用法格式:grep+参数+正则表达式+要匹配的内容其中常用的参数如下:(2)练习查找test.txt文件中包含root的内容并显示行号grep-nroottest.txt查找test.txt文件中不包含root的内容并显示行号 g... 查看详情

三剑客grep/sed/awk

6.1、正则表达式 正则表达式:是一类字符所书写出的模式(pattern);元字符:不表示字符本身的意义,用于额外功能性的描述。 1)基本正则表达式:BRE元字符:.: 匹配任意单个字符[char]: 匹配指定范围内的任意单... 查看详情

正则与sed,grep,awk三剑客

系统登录顺序:/etc/profile/etc/profile.d/a.sh(a.sh自己建的)/root/.bash_profile/root/.bashrc/etc/bashrc /bin/bash提供命令解释器(终端)直接打/bin/bash非登录shell/root/.bashrc/etc/bashrc/etc/profile.d/a 可将别名alias等写入以上三个文 查看详情

详解shell脚本:sed命令工具,awk命令工具(代码片段)

...展示,不能作为修改动作)grep(过滤,但是不支持正则表达式)egrep(支持正则表达式)sed(行过滤)awk(列过滤)-正则表达式概念正则表达式:使用单个字符串来描述、匹配一系列符合某个句法规则的字符串由普通 查看详情

正则表达式:awk

一、awk简介简介:awk是一个强大的文本分析工具,相对于grep的过滤,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。相比于sed常常作用于一整行的     处理,awk则比较倾向于将一行分为数个“字... 查看详情

awk&sed(代码片段)

...nuxawk命令详解sed入门详解教程一、写在前边二、基本正则表达式三、扩展正则表达式四、正则表达式的分类和应用五、sed语法和常用选项六、数字定址和正则定址七、基本子命令八、sed工作模式九、高级子命令十、分支和测试十... 查看详情

grep与基本正则表达式

...grep:文本过滤工具(通过模式:pattern)grep支持基本正则表达式,-E选项支持扩展正则表达式,-F不支持正则表达式egrep支持扩展正则表达式,-G选项支持基本正则表达式,-F不支持正则表达式fgrep不支持正则表达式,因此速度快sed... 查看详情

linux文本三剑客--grepsedawk(代码片段)

...、grep1.1什么是grep1.2使用grep命令格式命令参数基本正则表表达式匹配字符匹配次数位置锚点:定位出现的位置扩展正则表达式2.sed2.1什么是sed2.2使用sed命令格式常用选项options地址定界编辑命令commandsed用法演示地址界定演示编... 查看详情

(10)正则表达式

linux中常用正则表达式联合使用的工具有grep、sed、awk(sed、awk支持管道符号)grep -v  反选,不选sed ‘匹配条件/执行动作‘  /etc/passwd或 cat  /etc/passwd |  sed ‘匹配条件/执行动作‘&n... 查看详情