博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

文本处理命令,linux三剑客之sed

Posted on 2021-12-21 20:29  ~sang  阅读(54)  评论(0编辑  收藏  举报

一、文本处理命令

1、sort命令

  将文件内容进行排序

  -n:依照数值的大小排序

   -r:以相反的顺序来排序

   -k:以某列进行排序

   -t:指定分割符,默认是以空格为分割符

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

 2、uniq命令

  用于检查及删除文本文件中重复出现的行列,一般与sort命令结合使用

  -c:在每列旁边显示该行重复出现的次数

   -d:仅显示重复出现的行列

   -u:仅显示出现一次的行列

 3、cut命令

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

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

  -f:显示指定字段的内容,与-d一起使用

 4、tr命令

  替换或删除命令

  -d:删除字符

 

 5、wc命令

  统计文件的字节数、字数、行数(注:在Linux系统中,一段连续的数字或字母组合为一个词)

  -w:统计文件中单词的个数,默认以空白字符做为分割符

   -c:统计文件的Bytes数

   -l:统计文件的行数

 二、linux三剑客之sed

  sed是linux中,流媒体编辑器,主要用来自动编辑一个或多个文件

  grep:过滤文本

  sed:修改文本

  awk:处理文本

1、sed的格式

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

2、参数

  -e:允许多项编辑

  -n:取消默认输出

  -i:就地编辑

  -r:支持拓展正则

  -f:指定sed匹配规则脚本文件(可以将正则写入脚本)

3、定位

  1、数字定位法

    指定行号

   2、正则定位法

    指定正则定位

  3、数字和正则定位法

  4、正则正则定位法

 4、sed的编辑模式

  d:删除

  p:打印

  a:在当前行后添加一行或多行

   i:在当前行之前,插入文本(单独使用时)

   c:用新文本修改(替换)当前行

   r:在文件中读内容

   w:将指定行写入文件

   y:将字符转换成另一个字符

   s:将字符串转换成另一个字符串(每一行只替换一次)

   g:全部执行

   i:忽略大小写(跟s模式一起使用时)

  &:代表前面匹配到的内容

    [root@localhost ~]# sed 's/.*/# &/g' /etc/nginx/nginx.conf

 三、案例

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

  [root@localhost ~]# sed '/^ *#/d' /etc/nginx/nginx.conf

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

  [root@localhost ~]# sed 's/.*/# &/g' /etc/nginx/nginx.conf

3、修改本机的ip

  [root@localhost ~]# sed -i 's/.100/.101/g' /etc/sysconfig/network-scripts/ifcfg-eth[01]

4、将/etc/passwd中的root修改成ROOT

  [root@localhost ~]# sed -i 's/root/ROOT/g' /etc/passwd