文本处理命令 三剑客 sed

 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)


文本处理命令    三剑客 sed


文本处理命令    三剑客 sed

 

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

 

上一篇:linux文本处理命令之 sort uniq cut tr wc


下一篇:巧用 Cat / set 查看大Log文件部分内容