ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

文本处理命令 三剑客 sed

2021-12-21 21:33:22  阅读:175  来源: 互联网

标签:sort oldboy 删除 cat 文本处理 sed txt 三剑客


 1.文本处理命令

    1.sort 命令

      用于将文本内容加以排序
    -n  #按照数值的大小进行排序
       基本语法: cat oldboy.txt | sort - n
     -r  #按照相反的顺序
       基本语法: cat oldboy.txt | sort - n  -r
     -k   #以某列进行排序
       基本语法: cat oldboy.txt | sort - n  -r -k2 
                            >> 以第二列反向排序
     -t  #指定分隔符,默认是以空格为分隔符 
    基本语法:    cat 4.txt |sort -n -r -k3 -t '|'

扩展:vim编辑内容全部替换(:号进入末行模式,输入1,% s/ */|/g)



 

2. uniq  命令

         用于检查及删除文本文件中重复出现的行列,一般与sort 连用

连用语法:  cat  oldboy.txt | sort | uniq 

                      先用sort 排序再用 uniq  去重

 

      

 常用参数:
           - c : 在每列行边显示出现次数
          cat  oldboy.txt | sort | uniq  -c 
       -d : 仅显示重复出现的行列 
          cat  oldboy.txt | sort | uniq  -d
           -u : 仅显示出现一次行列
       cat oldboy |sort | uniq -u

3. cut 命令    

 cut 命令 用来显示行中的指定部分,删除文件中指定字段

   - d : 指定字段的分隔符,默认的字段分隔符为”Tab“

    -f : 显示指定字段的内容
            语法: cat oldboy.txt | cut -d '|' -f2
       

4. tr 命令

   替换或者删除命令

    参数:  
         - d : 删除字符
        语法:  cat oldboy.txt | tr 123 678
                 >>  按照顺序 挨个字符替换

5. wc  命令

统计, 计算数字
    参数: 
       -c :统文件的Bytes数;
     -l :统计文件中的行数;
      -w :统计文件中单词的个数,默认以空白字符做为分割符
注:在Linux 系统中,一段连续的数字或字母的组合为一个词。

 

2. linux 三剑客之一 sed

sed 是linux 中  流媒体编辑器

三剑客:

      grep : 过滤文本

      sed :修改文本

       awk :  处理文本

  1.sed 的格式

         sed   [参数]   ‘处理规则’  [操作对象]

   2.参数

     -e:允许多项编辑
        sed -e '3d' -e  '6d' 4.txt    删除 第3行,第6行
       -n:取消默认输出
        sed -e '3d' -e  '6d' -n 4.txt    不显示输出内容
    -i: 就地编辑   
       sed -i '5p' 4.txt     在 文本中打印第5行 增加到第6行
    -r :支持 拓展正则
       sed -r '/123/d' 4.txt     /123/d   正则匹配 4.txt  123 并删除掉
    -f :指定sed 定位脚本文件  
          sed -f 'r.txt' 4.txt       /123/d  写入r.txt    用r.txt 处理 4.txt   
             >> r.txt  为规则文件   4.txt 为操作对象

 

3. 定位

     1.> 数字定位法‘
       》 指定行号
         。sed  ’3d‘ 4.txt    ☞ 第3行
        。sed  '2,3d' 4.txt    ☞ 2到3行
     2.> 正则定位法
       》指定正则定位 
     sed ’/g/d‘ 2.txt   删除 包含g 的行
      sed ’/^g/d‘ 2.txt 删除以g 开头的行、
       3.> 数字和正则定位法         
     sed '3,/^g/d' 2.txt
        >> 删除从第3行到以g 开头的行
        4.>  正则正则定位法
    sed '/^g/,/^j/d' 2.txt 
           >>删除以 g 开头到以 j 开头的行 

 

  4.  sed 的编辑模式 

     d  : 删除
   p : 打印(添加) sed -n '5p' 4.txt 打印一行 取消默认输出   a :在当前行后添加 一行或多行   sed '2axxx' 4.txt       >> 在第二行后添加 xxx    c : 用新的文本修改或者)替换)当前行      sed ’2cxxx‘ 4.txt       >>把第2行内容修改为xxx  i : 在当前行之前,插入文本       sed '2ixxx' 4.txt     >> 在第2行之前插入一行 xxx    r : 从文本当中读内容     sed '2r r.txt' 4.txt       >> 在4.txt 第2行插入读取的 r.txt 中的内容   w: 将指定行写入文件      sed '2w w.txt' 2.txt       >> 将2.txt 文件中第2行内容 写入w.txt文件中    y: 将字符转换成 另外一个字符      sed '2y /f/F/' 2.txt       >> 将2.txt 第2行内容中 小写 f 替换成 F    s: 将一个字符串转换成另外一个字符串(每一行只替换一次)      sed 's/11/22' 6.txt     >> 将6.txt 文件中 每一行数字11 替换为22 每行只替换一次    g: 全部执行     注:g 没有替换功能,只是把 前面模式的功能应用到整行中去       sed 's/11/22/g' 6.txt       >> 替换6.txt 中全部内容     i :忽略大小写       第二个特征 与s 模式一起使用时
    & :代表前面匹配到的内容

 

4.案例

     1. 将nginx.conf 中的注释行全部 去掉

           >>sed '/^ *#/d' /etc /nginx/nginx.conf

   2. 将nginx.conf 中每一行之前增加注释

      >>  sed 's/.*/# &/g' /etc/nginx/nginx.conf

   3. 要求一建修改本机的 ip

   >> 192.168.15.100 ---> 192.168.15.101

   >>  172.16.1.100 ---> 172.16.1.101

     sed -i 's#.100#.1001#g' /etc/sysconfig/network-scripts/ifcfg-eth[01]

   4. 将 /etc/pssswd中的root修改为ROOT

     sed -i 's#root#ROOT#g' /etc/passwd

 

标签:sort,oldboy,删除,cat,文本处理,sed,txt,三剑客
来源: https://www.cnblogs.com/semwu/p/15717268.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有