文本处理命令+三剑客之sed

一、文本处理命令

1、排序命令 sort

  1. 1、排序命令 sort
  2. 用于将文件内容加以排序,默认以'''每一行第一个字符'''来判定顺序
  3. 举例: cat a.txt | sort
  4. PS:空行会排在第一行,即最前面。
  5. 创建一个num.txt,里面添加各种数字做举例使用。
  6. 无参数:# 依照每一行第一个字符来判定顺序
  7. -n # 依照数值的大小排序 [root@linux ~]# cat num.txt | sort -n
  8. -r # 以相反的顺序来排序 [root@linux ~]# cat num.txt | sort -r
  9. -k # 以某列字符串进行排序 [root@linux ~]# cat num.txt | sort -nk2
  10. 文本内必须有多列内容(并非以第二个字符为第二列,而是对齐的第二列字符串)
  11. -t # 指定分割符,默认是以空格为分隔符 [root@linux ~]# cat num.txt | sort -nr -k2 -t ' '
  12. cat 3.txt | sort -n -r -k3 -t '|'
  13. 知识储备:1,% s/ /|/g # 将空格替换为|管道符(在vim编辑里使用)
  14. 解释:
  15. 1,% :意思是 1到所有 的数据

2、检查/删除命令 uniq

  1. 用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用
  2. -c # 在每列旁边显示该行重复出现的次数。
  3. 某一行出现2次,这一行前面的号码就是2 [root@linux ~]# cat num.txt | uniq -c
  4. -d # 仅显示重复出现的行列。
  5. c参数:前面出现次数) [root@linux ~]# cat num.txt | uniq -dc
  6. 结合 sort 使用(排序): [root@linux ~]# cat num.txt | sort -n | uniq -dc
  7. -u # 仅显示出一次的行列。
  8. c参数:空行也会显示1 [root@linux ~]# cat num.txt | uniq -cu

3、 cut 显示特定部分命令

  1. cut命令用来显示行中的指定部分,删除文件中指定字段
  2. -d # 指定字段的分隔符,默认的字段分隔符为"TAB";
  3. cut -d后面指定一个分隔符 >>> [root@linux ~]# cat num.txt | cut -d '|' -f2
  4. -f # 显示指定字段的内容;
  5. -f2 显示以分隔符'|'分开的第二列数据
  6. 可以结合 sort 使用:
  7. [root@linux ~]# cat num.txt | sort -nrk1 | cut -d '|' -f2
  8. 结合 uniq 使用:
  9. uniq -d [root@linux ~]# cat num.txt | sort -nrk1 | uniq -cd | cut -d '|' -f2
  10. uniq -u [root@linux ~]# cat num.txt | sort -nrk1 | uniq -cu | cut -d '|' -f2
  11. 被分割后,可能会不显示 -c 参数的重复行数



sort命令和cut命令连用:

4、 替换或删除命令 tr

  1. 不添加参数替换(存在问题):
  2. 将前面的数据 修改为 后面的数据:[root@linux ~]# cat num.txt | tr 123123 696969
  3. 替换原理:一个字符一个字符的替换,即1换成6,再2换成9,再3换成6...以此类推至结束。
  4. -d # 删除字符
  5. [root@linux ~]# cat num.txt | tr -d '76'
  6. 解释:把这个文本中,每一行带有的76都删除,非76的其他数据不进行操作。

5、统计 计算数字命令 wc

  1. -c # 统计文件的Bytes数; [root@linux ~]# cat ceshi.txt | wc -c
  2. -l # 统计文件的行数; [root@linux ~]# cat ceshi.txt | wc -l
  3. -w # 统计文件中单词的个数,默认以空白字符做为分隔符 [root@linux ~]# cat ceshi.txt | wc -w
  4. '''PS:默认以空白字符做为分隔符'''
  5. 注:在Linux系统中,一段连续的数字或字母组合为一个词。
  6. 举例:123 456>>> 数字123与数字456之间有一个空格' '将其分开,所以是两个单词。
  7. 举例:123!456>>> 数字123与数字456之间有一个叹号'!',只有空格分割才有效,所以是一个单词。

二、linux三剑客之sed

sed是linux中,流媒体编辑器。

1、sed的格式

  1. sed [参数] '处理规则' [操作对象]
  2. grep 过滤文本
  3. sed : 修改文本
  4. awk : 处理文本

2、参数

  1. -e 允许多项编辑
  2. 分别删除第3行和第4 [root@linux ~]# sed -e '3d' -e '4d' num.txt
  3. -n : 取消默认输出
  4. (就是我只想打印第一行,其他的不打印,加命令-n,就只显示第一行内容)
  5. [root@linux ~]# sed -n '5p' num.txt
  6. -i : 就地编辑
  7. '''(只有此命令是编辑之后就生效了,因为直接修改了源文件)''' [root@linux ~]# sed -i '5p' num.txt
  8. -r : 支持拓展正则
  9. (就是临时可以使用正则表达式的规则,在两个/之间。) [root@linux ~]# sed -r '/123/d' num.txt
  10. -f : 指定sed匹配规则脚本文件
  11. (将正则写在另一个文件里 1.txt,进行调用) [root@linux ~]# sed -f 1.txt num.txt

3、定位(# 四个之中最重要)

  1. 1、数字定位法
  2. 指定行号。
  3. sed '3d' 4.txt >>> 指删除第3行内容 [root@linux ~]# sed '3d' 4.txt
  4. sed '2,3d' 4.txt >>> 指删除第2到第3行内容 [root@linux ~]# sed '2,3d' 4.txt
  5. 2、正则定位法
  6. 指定正则定位。
  7. sed '/^g/d' 2.txt >>> 指将以g开头的本行内容都删除
  8. 举例:[root@linux ~]# sed '/123/d' num.txt
  9. 3、数字和正则定位法
  10. sed '3,/^g/d' 2.txt >>> 从第3行到以g开头的内容删除
  11. 举例:[root@linux ~]# sed '1,/^45/d' num.txt
  12. (如果下面还有以 45开头的,不进行删除)
  13. 4、正则正则定位法
  14. sed '/^g/,/^j/d' 2.txt >>> g开头的行 到以j开头的行删除
  15. 举例:[root@linux ~]# sed '/^23/,/^90/d' num.txt

4、sed的编辑模式(# 重要程度次之)

  1. * 所有内容都是在正则中进行,即//之中进行。
  2. d :删除
  3. p :打印
  4. '''如果选第5行打印,则在第5行基础上再复制1行,如果加命令 -n后,只显示打印的第5行,其他不显示。
  5. a : 在当前行后添加一行或多行
  6. sed '2axxx' 4.txt >>> 在第2行通过a命令模式将内容 xxx添加到num.txt中
  7. 举例:[root@linux ~]# sed '2aQQQQQQ' num.txt
  8. c :用新文本修改(替换)当前行
  9. sed '2cxxx' 4.txt >>> 在第2行修改文本整体修改为,或者替换为xxx,无论这一行有多少内容。
  10. 举例:[root@linux ~]# sed '2cQQQQQQ' num.txt
  11. i : 在当前行之前,插入文本(#单独使用时)
  12. sed '2ixxx' 4.txt >>> 在第2行之前插入一行,内容为xxx
  13. 举例:[root@linux ~]# sed '2iQQQQQQ' num.txt
  14. r : 在文件中读内容
  15. sed '2r r.txt' 2.txt >>> 将文件r.txt中的内容 读到第2行的下一行
  16. 举例:[root@linux ~]# sed '2r 1.txt' num.txt
  17. w : 将指定行写入文件
  18. sed '2w 1.txt' 2.txt >>> 将 第2行的内容 写入到1.txt中,并且会覆盖1.txt中的内容
  19. 举例:[root@linux ~]# sed '2w 1.txt' num.txt
  20. y : 将字符转换成另一个字符
  21. sed '2y/fa/FA/' 2.txt >>> 将第2行的f和a,依次各自替换成F和A。(这里是字符,不是字符串)
  22. 举例:[root@linux ~]# sed '2y/fa/FA/' 2.txt
  23. s : 将字符串转换成另一个字符串(每一行只替换一次) s 命令需放在前面
  24. sed 's/11/22/' 6.txt >>> 将所有含有的11,替换成且只替换一次成22
  25. 举例:[root@linux ~]# sed 's/123/333/' num.txt
  26. g : 全部执行 (g是没有替换功能的,只是将前面的s功能应用到整行里面去了)
  27. sed 's/11/22/g' 6.txt >>> 将所有含有的11,都替换成22
  28. 举例:[root@linux ~]# sed 's/123/333/g' num.txt
  29. i : 忽略大小写(跟 s 模式一起使用时)
  30. [root@linux ~]# sed 's/f/abc/gi' num.txt
  31. & :代表前面匹配到的内容

三、案例练习

  1. 1、将nginx.conf中的注释行全部去掉
  2. [root@localhost ~]# sed '/^ *#/d' /etc/nginx/nginx.conf
  3. '''将以空格和其他内容开头,再加上#井号键的内容删除
  4. 2、将nginx.conf中每一行之前增加注释
  5. [root@localhost ~]# sed 's/.*/# &/g' /etc/nginx/nginx.conf
  6. '''&符号,表示前面匹配到的内容,即(.*),相当于一个变量了,& = .* '''
  7. 3、要求一键修改本机的ip
  8. 192.168.15.100 ---> 192.168.15.101
  9. 172.16.1.100 ---> 172.16.1.101
  10. sed -i 's#.100#.101#g' /etc/sysconfig/network-scripts/ifcfg-eth[01]
  11. 引号''内的# 警号 跟/斜杠作用一样,起到隔离作用
  12. sed -i 's/.100/.101/g' /etc/sysconfig/network-scripts/ifcfg-eth[01]
  13. sed -i -e 's/192.168.15.100/192.168.15.101/' -e 's/172.16.1.100/172.16.1.101/' /etc/sysconfig/network-scripts/ifcfg-eth[01]
  14. 4、将/etc/passwd中的root修改成ROOT
  15. sed -i 's#root#ROOT#g' /etc/passwd
  16. 也可以将其写为:
  17. sed -i 's/root/ROOT/g' /etc/passwd

文本处理命令(sort+uniq+cut+tr+wc)+三剑客之sed的更多相关文章

  1. 【转帖】linux sort,uniq,cut,wc,tr,xargs命令详解

    linux sort,uniq,cut,wc,tr,xargs命令详解 http://embeddedlinux.org.cn/emb-linux/entry-level/201607/21-5550 ...

  2. linux sort,uniq,cut,wc命令详解

    linux sort,uniq,cut,wc命令详解 sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些 ...

  3. (转)linux sort,uniq,cut,wc命令详解

    linux sort,uniq,cut,wc命令详解 sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些 ...

  4. linux sort,uniq,cut,wc,tr命令详解

    sort是在Linux里非常常用的一个命令,对指定文件进行排序.去除重复的行 sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sor ...

  5. 文件上传下载,命令之wget / curl / which / sort / uniq / cut / wc /tr /sed

    目录 命令 1.文件的上传下载 2.从外网下载文件wget 3.curl文件下载 4.查找命令which 5.字符处理命令-排序sort 6.字符处理-去重uniq 7.字符处理-截取cut 8.字符 ...

  6. [转]linux sort,uniq,cut,wc命令详解

    sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 ...

  7. Linux之 sort,uniq,cut,wc命令详解

    sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 ...

  8. Ubuntu 14.10 下sort,uniq,cut,wc命令详解

    sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 ...

  9. linux sort,uniq,cut,wc命令详解 (转)

    sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 ...

随机推荐

  1. Hive分区表和桶表的使用

    原文链接: https://www.toutiao.com/i6766897068138037763/?group_id=6766897068138037763 我们看官网文档中这个地方 我们先创建好 ...

  2. [解决] No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android

    前端时间项目组让我改一个比较老的项目,说是用Android Studio2.3版本可以直接运行,于是我下载了一个2.3.2的,结果出现了一堆问题,总结下: 首先导入项目后build完直接报出:No t ...

  3. 自动化集成:Pipeline整合Docker+K8S

    前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述流水线集成K8S用法. 一.背景描述 分布式服务的部署 ...

  4. 【SpringCloud技术专题】「Gateway网关系列」(3)微服务网关服务的Gateway全流程开发实践指南(2.2.X)

    开发指南须知 本次实践主要在版本:2.2.0.BUILD-SNAPSHOT上进行构建,这个项目提供了构建在Spring生态系统之上API网关. Spring Cloud Gateway的介绍 Spri ...

  5. 《手把手教你》系列技巧篇(五十八)-java+ selenium自动化测试-分页测试(详细教程)

    1.简介 前几天,有人私信里留言问宏哥,分页怎么自动化测试了,完了给他说了说思路,不知道最后搞定没有,索性宏哥就写一篇文章来讲解和介绍如何处理分页. 2.测试场景 对分页来说,我们最感兴趣的和测试的无 ...

  6. Java常见对象内存分析

    首先要明确Java内存的个位置上放的是啥 类.对象.实例三者的关系: 1.类:是对象的模板,可以实例化对象.(this不能出现在静态方法中) 2.对象:类的个体. 3.实例:实现的对象. 4.对应的引 ...

  7. 20个 CSS 快速提升技巧

    作者:web秀 http://www.javanx.cn/20190321/css-skill/ 本文涵盖了20个css技巧,可以解决许多工作中常见的问题. 1.使用CSS重置(reset) css重 ...

  8. 不难懂-----redux

    一.flux的缺陷 因为dispatcher和Store可以有多个互相管理起来特别麻烦 二.什么是redux 其实redux就是Flux的一种进阶实现.它是一个应用数据流框架,主要作用应用状态的管理 ...

  9. vscode开发PHP攻略

    前言 此文主要介绍如何使用vscode开发PHP,开发体验可以说和php死桃木不相上下(虽然我没用过php死桃木) PHP扩展组合 一.卡巴斯基组合 PHP IntelliSense PHP Debu ...

  10. Flink源码学习笔记(2) 基于Yarn的自动伸缩容实现

    1.背景介绍 随着实时计算技术在之家内部的逐步推广,Flink 任务数及计算量都在持续增长,集群规模的也在逐步增大,本着降本提效的理念,我们研发了 Flink 任务伸缩容功能: 提供自动伸缩容功能,可 ...