正则表达式及相关工具-Linux

  1. 正则表达式
  • ():匹配小括号内的字符串,可以是一个,也可以是多个,常跟“|”(或)符号搭配使用,是多选结构
  • []:匹配字符组内的字符,比如咱们常用的[0-9a-zA-Z.*?!]等,在[]内的字符都是字符
  • {}:匹配次数,匹配在它之前表达式匹配出来的元素出现的次数
  • ^ 行首 $ 行尾 ^$空行
  • . 任意字符(除换行)
  • * 0-n个 + 1-n个 ? 1个
  • [^]表示除了[]内的内容 ^[]表示要以[]内容开头
  • [0-9] 0-9任意一个字符 [a-z] a-z任意一个字符 [A-Z] A-Z任意一个字符 [a-Z]等价于[a-zA-Z] 所有字母中的任意一个
  • < 单词头 > 单词尾 (以空格分隔单词)
  1. 转义支持
  • grep,sed,awk均是针对文本的行来操作
  • awk 直接支持转义,但不支持{}转义,加 --posix后支持{}转义
  • sed 加-r支持转义
  • grep 加-E支持转义
  • 练习
    grep -i -E 'ro{1,2}' passwd 等价于 grep -i 'ro{1,2}' passwd
    sed -n -r '/roo?/'p passwd 等价于 sed -n '/root?/'p passwd
    awk '/ro{2,}/{print}' passwd 无结果 awk --posix '/ro{2,}/{print}' passwd 才能匹配到结果
  1. grep
  • 参数
    -n :显示行号
    -o :只显示匹配的内容
    -q :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容
    -l :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc
    -A :如果匹配成功,则将匹配行及其后n行一起打印出来
    -B :如果匹配成功,则将匹配行及其前n行一起打印出来
    -C :如果匹配成功,则将匹配行及其前后n行一起打印出来
    --color :关键字加上颜色显示
    -c :如果匹配成功,则将匹配到的行数打印出来
    -E :等于egrep,扩展
    -i :忽略大小写
    -v :取反,不匹配
    -w:匹配单词
  • 练习
    显示出所有含有root的行:grep 'root' passwd
    输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容:grep -C 2 'bash' passwd
    显示出有多少行含有nologin:grep -c 'nologin' passwd
    显示出哪些行含有root,并将行号一块输出:grep -n 'root' passwd
    查找nfsnobody和ntp用户:grep -E 'n(fsnobody|tp)' passwd
    过滤出单词组成是字母+数字+字母的行:grep -E '^[a-Z]+[0-9]+[a-Z]+' passwd
    过滤掉所有注释和空行:sudo grep -v '^#' /etc/ssh/sshd_config | grep -v '^$'
  1. sed
  • 常用参数
    -n p 只打印结果
    -e 实现多行sed指令
    d 删除某行或多行或匹配的某个字符串
    s 替换,替换为空则为删除操作
    g 全局 不加g只处理每行的第一个
    / 可用于分隔符,如果要替换路径等,可将/改为#或@
    -i 可用来直接修改文件内容
  • 练习
    用sed打印所有行:sed -n '1,$'p test.txt
    打印test.txt的3到10行:sed -n '3,10p' test.txt
    打印test.txt 中包含 ‘root’ 的行:sed -n 'root'p test.txt
    删除test.txt 的15行以及以后所有行:sed '15,$'d test.txt
    删除test.txt中包含 ‘root’ 的行:sed '/root/'d test.txt
    替换test.txt 中 ‘root’ 为 ‘toor’:sed 's/root/toor/g' test.txt
    替换test.txt中 ‘sbin/nologin’ 为 ‘bin/login’:sed 's#sbin/nologin#bin/login#g' test.txt
    删除test.txt中5到10行中所有的数字:sed '5,10s/[0-9]//g' test.txt
    删除test.txt 中所有特殊字符(除了数字以及大小写字母):sed 's/[^0-9a-Z]//g' test.txt
    在test.txt 20行到末行最前面加 ‘aaa:’:sed '20,$s/^./aaa:&' test.txt
    把test.txt 中第一个数字移动到行末尾root:x:0:0:root:/root:/bin/bash:sed -r 's#([0-9][0-9]
    )([0-9][0-9])([^0-9].$)#\1\3\2#'
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容

  • 正则表达式 关于正则表达式相信很多学计算机的人都听说过 尤其是做编程行业的人 那什么是正则表达式 正则表达式,又称...
    数据革命阅读 896评论 0 1
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,088评论 0 0
  • 概念 正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expre...
    dxldeng阅读 2,472评论 0 2
  • 本文笔记源自这里——[实验楼]欢迎大家在下面交流其中有问题的地方喜欢请点收藏,每日更新(全部已亲自实践). 一. ...
    东皇Amrzs阅读 3,977评论 7 54
  • 通关,培训!! 好久没有这种一群人,做一件事的感觉了。一起完成一个PPT,一起研究一次演讲,挺感谢公司这次的安排。...
    DeathKnightR阅读 146评论 0 0