Linux_sed,grep,awk整理

sed

sed中的常用选项

  • -n:不输出模式空间内容到屏幕,即不自动打印,只打印匹配到的行
  • -e:多点编辑,对每行处理时,可以有多个Script
  • -f:把Script写到文件当中,在执行sed时-f 指定文件路径,如果是多个
  • Script,换行写
  • -r:支持扩展的正则表达式
  • -i:直接将处理的结果写入文件
  • -i.bak:在将处理的结果写入文件之前备份一份

地址定界

  • 不给地址:对全文进行处理

  • 单地址:

    • #: 指定的行
    • /pattern/:被此处模式所能够匹配到的每一行
  • 地址范围:

    • -#,#
    • #,+#
    • /pat1/,/pat2/
    • #,/pat1/
  • ~:步进

    • sed -n ‘1~2p’ 只打印奇数行 (1~2 从第1行,一次加2行)
    • sed -n ‘2~2p’ 只打印偶数行

sed中的编辑命令Command

  • d:删除模式空间匹配的行,并立即启用下一轮循环
  • p:打印当前模式空间内容,追加到默认输出之后
  • a:在指定行后面追加文本,支持使用\n实现多行追加
  • i:在行前面插入文本,支持使用\n实现多行追加
  • c:替换行为单行或多行文本,支持使用\n实现多行追加
  • w:保存模式匹配的行至指定文件
  • r:读取指定文件的文本至模式空间中匹配到的行后
  • =:为模式空间中的行打印行号
  • !:模式空间中匹配行取反处理

在替换时,可以加一下命令,实现大小写转换

  • \l:把下个字符转换成小写。
  • \L:把replacement字母转换成小写,直到\U或\E出现。
  • \u:把下个字符转换成大写。
  • \U:把replacement字母转换成大写,直到\L或\E出现。
  • \E:停止以\L或\U开始的大小写转换

加g表示行内全局替换;

使用例子

[root@user ~]# cat test
aaa
bbbb
AABBCCDD
[root@user ~]# sed "/aaa/p" test  #匹配到的行会打印一遍,不匹配的行也会打印
aaa
aaa
bbbb
AABBCCDD
[root@user ~]# sed -n "/aaa/p" test  #-n不显示没匹配的行
aaa
[root@user ~]# sed -e "s/a/A/" -e "s/b/B/" test  #-e多点编辑
Aaa
Bbbb
AABBCCDD
[root@user ~]# cat sedscript.txt
s/A/a/g
[root@user ~]# cat test
aaa
bbbb
AABBCCDD
[root@user ~]# sed -n "p" test  #不指定行,打印全文
aaa
bbbb
AABBCCDD
[root@user ~]# sed "2s/b/B/g" test  #替换第2行的b->B
aaa
BBBB
AABBCCDD
[root@user ~]# sed -n "1,2p" test  #打印1-2行
aaa
bbbb

sed中的高级命令

  • h:把模式空间中的内容覆盖至保持空间中
  • H:把模式空间中的内容追加至保持空间中
  • g:从保持空间取出数据覆盖至模式空间
  • G:从保持空间取出内容追加至模式空间
  • x:把模式空间中的内容与保持空间中的内容进行互换
  • n:读取匹配到的行的下一行覆盖 至模式空间
  • N:读取匹配到的行的下一行追加 至模式空间
  • d:删除模式空间中的行
  • D:删除 当前模式空间开端至\n 的内容(不再传 至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed

grep的基本使用

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来(匹配到的标红)。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

参数的使用

  • -A:<显示行数>:除了显示符合范本样式的那一列之外,并显示该行之后的内容。
  • -B:<显示行数>:除了显示符合样式的那一行之外,并显示该行之前的内容。
  • -C:<显示行数>:除了显示符合样式的那一行之外,并显示该行之前后的内容。
  • -c:统计匹配的行数
  • -e :实现多个选项间的逻辑or 关系
  • -E:扩展的正则表达式
  • -f FILE:从FILE获取PATTERN匹配
  • -F :相当于fgrep
  • -i --ignore-case #忽略字符大小写的差别。
  • -n:显示匹配的行号
  • -o:仅显示匹配到的字符串
  • -q: 静默模式,不输出任何信息
  • -s:不显示错误信息。
  • -v:显示不被pattern 匹配到的行,相当于[^] 反向匹配
  • -w :匹配 整个单词

Linux中的正则表达式

  • 匹配任意单个字符,不能匹配空行
  • [] 匹配指定范围内的任意单个字符
  • [^] 取反
  • [:alnum:][0-9a-zA-Z]
  • [:alpha:][a-zA-Z]
  • [:upper:][A-Z]
  • [:lower:][a-z]
  • [:blank:] 空白字符(空格和制表符)
  • [:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
  • [:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
  • [:digit:] 十进制数字 或[0-9]
  • [:xdigit:]十六进制数字
  • [:graph:] 可打印的非空白字符
  • [:print:] 可打印字符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值