zoukankan      html  css  js  c++  java
  • Linux文本处理三剑客

    grep(文本过滤)

    • grep 使用基础正则表达式匹配
    • egrep 使用扩展正则表达式匹配
    • fgrep 不使用正则表达式匹配,速度最快
    [root@stardust ~]# grep -v 排除指定字符串
    [root@stardust ~]# grep -i 忽略大小写匹配
    [root@stardust ~]# grep -n 显示匹配到的行号
    [root@stardust ~]# grep -c 显示匹配行数
    [root@stardust ~]# grep -o 仅显示匹配到的字符串
    [root@stardust ~]# grep -q 静默模式 不输出任何信息 配合$?使用
    [root@stardust ~]# grep -w 精确匹配
    
    [root@stardust ~]# grep -A 显示匹配行及后面N行
    [root@stardust ~]# grep -B 显示匹配行及前面N行
    [root@stardust ~]# grep -C 显示匹配行及前后N行
    
    [root@stardust ~]# grep -E egrep
    [root@stardust ~]# grep -G grep
    [root@stardust ~]# grep -F fgrep
    [root@stardust ~]# grep -P 使用perl的正则

    sed(行编辑器)

    sed(Stream Editor)操作文件时,每次从源文件中读取一行到sed工作的模式空间(pattern space)中,在模式空间中对数据进行操作后,将文本流输出至屏幕

    常用选项

    • -n 静默模式,不输出模式空间中的内容至屏幕
    • -e script 多点编辑功能,在一个sed命令中执行多个编辑操作
    • -f script-file 指定脚本文件
    • -r 支持使用扩展正则表达式
    • -i 修改原文件
      • -i.bak 修改前自动创建备份文件

    地址定界

    • 不给地址 对全文进行处理
    • 单个地址
      • number 指定的行
      • /pattern/ 被此模式所能匹配到的每一行
    • 地址范围
      • num1,num2 从num1到num2之间的行
      • num1,+num2 从num1起到之后的num2行
      • /pat1/,/pat2/ 两个pattern之前的行
      • num,/pat1/ 从num起到pat区间的行
      • /pat/,~num 匹配行步进num行
    • 步进 ~
      • num1~num2 从num1开始,每隔num2行操作。
      • 1~2 显示奇数行
      • 0~2 显示偶数行

    编辑命令

    • d 删除
    • p 显示模式空间中的内容
    • a 行后追加文本
    • i 行前插入文本
    • c 替换行的文本内容
    • w FILE 把模式空间中匹配到的行保存到指定文件
    • r FILE 把指定文件的文本流读取到当前文件匹配行的行后

    • = 为模式空间中的行显示行号

    • ! 对地址定界取反
    • s/// 查找替换 使用方法同vim中的s///
      • 同vim,默认只替换一行中第一个匹配的内容 区分大小写
      • i 不区分大小写
      • g 全局替换 每一个匹配的元素都替换
      • p 配合-n使用,只显示处理过的行
      • w FILE 将处理过的行 保存至指定文件
    • ; 如果在一次执行时包含多个处理命令,需要使用分号分割

    高级编辑命令

    • h 把模式空间中的内容覆盖至保持空间中
    • H 把模式空间中的内容追加至保持空间中
    • g 从保持空间取出数据覆盖至模式空间
    • G 从保持空间取出内容追加至模式空间
    • x 把模式空间中的内容与保持空间中的内容进行互换
    • n 读取匹配到的行的下一行至模式空间
    • N 追加匹配到的行的下一行至模式空间
    • d 删除模式空间中的行
    • D 删除多行模式空间中的所有行
    高级编辑使用示例
    sed -n 'n;p' FILE:显示偶数行
    sed '1!G;h;$!d' FILE:逆向显示文件内容
    sed '$!N;$!D' FILE:取出文件后两行
    sed '$!d' FILE:取出文件最后一行
    sed 'G' FILE:在每一行后添加一行空白行
    sed '/^$/d;G' FILE:把多个空白行合并成一行
    sed 'n;d' FILE: 显示奇数行;
    sed -n '1!G;h;$p' FILE: 逆向显示文件中的每一行




  • 相关阅读:
    常用的DOCS命令
    [51NOD1126]求递推序列的第n项(矩阵快速幂)
    [HDOJ2830]Matrix Swapping II(胡搞)
    [每天一道A+B]签到检测程序
    [HIHO1260]String Problem I(trie树)
    [HIHO1300]展胜地的鲤鱼旗(栈,dp)
    [HIHO1299]打折机票(线段树)
    [51NOD1087]1 10 100 1000(规律,二分)
    [POJ2002]Squares(计算几何,二分)
    [HDOJ1015]Safecracker(DFS, 组合数学)
  • 原文地址:https://www.cnblogs.com/hemingyuan/p/7914438.html
Copyright © 2011-2022 走看看