一:基本

  • 字符处理主要是文本的搜索和处理。
  • 搜索也主要使用到了 管道 作为媒介。

二: grep 搜索文本

  - 基本语法 (可以在文本中使用正则进行搜索)

    - grep [-incv] '文本' 文件

      - i 不区分大小写

      - c 匹配行数

      - n 输出匹配行数

      - v 反向匹配

  - 正则使用

    - grep '^[123]' index.txt  (搜索在开头为123的行)

三: sort 排序

  - 基本语法

    - sort [-ntkr] 文件名

      - n 数字排序

      - t 指定分隔符

      - k 指定第几列

      - r 反向排序

  - 指定排序

    - -t -k 可以指定排序方式

    - 比如这里,我新建了一个 sort.txt

      • [mttyk]$ cat sort.txt
        b:-
        a:-
        f:-
        h:-
        d:-
        h:-
        g:-

    - 在没有指定条件时候,sort 默认第一个字符正序

      • [mttyk]$ sort sort.txt
        a:2-2
        b:1-3
        d:3-6
        f:4-1
        g:6-7
        h:8-9
        h:8-9

    - 如果想使用第二例的数字来进行排序的话

      • [mttyk]$ sort -t ":" -k 2 sort.txt
        b:1-3
        a:2-2
        d:3-6
        f:4-1
        g:6-7
        h:8-9
        h:8-9

        -t 等于切割了两组
        1组 切割符 第二组
        b : 1-3
        a : 2-2
        ......

四: uniq 删除重复内容

  - 基本语法

    - uniq [-ic] 文件

      - i 忽略大小写

      -c 显示重复行数

  - 注意

    - uniq 语法应该是和 sort 一起使用的,因为不连续的重复数据,uniq 是无法删除的

    - 所以需要 sort 排序后删除/统计

    • 文件
      h:8-9
      d:3-6
      h:8-9 直接 uniq 删除重复
      [mttyk]$ uniq sort.txt
      h:8-9
      d:3-6
      h:8-9
      无法删除 排序后 uniq 删除重复
      [mttyk]$ sort sort.txt | uniq
      d:3-6
      h:8-9

五: tr (文本转换/删除)

   - tr 只能在管道中处理字符,源文件并不能修改

  - 基本语法 (支持正则)

    - 删除指定字符  tr -d "[1-9]"

    - 转换指定字符 tr "[a-z]" "[A-Z]"

  - 替换字符时,文本中有多少个字符,就只能替换多少个字符

六:sed (文本处理) ( -i 可改变源文件)

  - 基于 行  的 文本处理工具

  - 基本语法

    sed [options] 'commend' file

  - 删除操作 (/d)

    - 删除指定行    sed '1d' index.txt (删除 index.txt 文件下的第1行)

    - 删除指定区间 sed '1,2d' index.txt (删除 index.txt 文件下的第1-2行)

    - 删除最后一行 sed '$d' index.txt (删除 index.txt 文件下的最后一行)

    - 删除空行       sed '/^$/d' index.txt (删除 index.txt 文件下的空行)

  - 查找替换 (s/)

    - 部分替换 sed 's/L/l/1' index.txt (替换 index.txt 文件下的L为l) (只替换一行中的第一个)

    - 全部替换 sed 's/L/l/g' index.txt (替换 index.txt 文件下的L为l) (一行不管有多少个,全部替换)

 

  - 字符替换 (y/)

    - 批量替换 sed 'y/abcd/ABCD/' index.txt (替换 index.txt 文件下的a为A, b为B, c为C,d为D)

  - 文本插入 (i 匹配行后插入) (a 匹配行前插入)

    - 指定行插入 sed '2 i insert' index.txt  (在 index.txt 文件 第2行 插入文本)

七:awk (文本处理)

  - 基于 列 的文本处理工具

  - 基本语法

    - -F 指定分隔符

  - 基本操作

    - 查看文本域数量

      - awk '{print NF}' index.txt  (查看 index.txt 文件的切割域) (内部变量 NF 实现)

    - 求和

      - awk 'BEGIN{total=0}{total+=$1}END{print total}' index.txt

      - awk 'BEGIN{total=0;num=0}{num+=$1;total+=1}END{print total/num}' index.txt

《linux 字符处理》- grep/sort/uniq/tr/paste的更多相关文章

  1. Linux管线命令 - cut,grep,sort,uniq,wc,tee,tr,col,join,paste,expand,split,xargs

    在每个管线后面接的第一个数据必定是『命令』喔!而且这个命令必须要能够接受 standard input 的数据才行,这样的命令才可以是为『管线命令』,例如 less, more, head, tail ...

  2. linux命令-awk,sort,uniq

    学习地址:http://man.linuxde.net/awk#awk的工作原理 awk 选项参数说明: -F fs or --field-separator fs 指定输入文件折分隔符,fs是一个字 ...

  3. linux shell——md5sum,sha1sum,sort,uniq (转)

    1.文件校验 1. md5sum eg: md5sum filename 注:生成一个128位的二进制位,即32位的十六进制字符串 1.验证文件的正确性: md5sum  file1 file2 &g ...

  4. linux命令使用 cut/sort/uniq

    我记得之前去XX网面试的那个面试题是这样的:有个apache.log 文件文本内容如下:======================[niewj@centSvr ~]$ cat apache.log  ...

  5. linux字符处理命令 sort(部分转载)

    [root@LocalWeb01 ~]# sort /etc/passwd |less   (升序 ) [root@LocalWeb01 ~]# sort -r /etc/passwd |less ( ...

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

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

  7. 【转帖】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 ...

  8. [linux] grep awk sort uniq学习

    grep的-A-B-选项详解grep能找出带有关键字的行,但是工作中有时需要找出该行前后的行,下面是解释1. grep -A1 keyword filename找出filename中带有keyword ...

  9. 线上问题debug过程(cat,grep,tr,awk,sort,uniq,comm等工具的综合使用)

    问题:发现线上到货单的数量,小于实际到货的数量. 怀疑一些隐藏的条件,将部分唯一码进行了过滤,导致数量变少. 开展了如下的跟踪流程: 1.找到其中一个明细的唯一码 grep 6180e-4b09f p ...

随机推荐

  1. 提一下InfoQ

    昨天在微信读书中整理了一个"架构师"清单,把InfoQ中文社区这两年发布的电子书整理到了一起,分享给了团队成员. 如果你去研究InfoQ中文社区,就会发现其中一个人与之因缘际会的相 ...

  2. Java JPA小记

    什么是JPA JPA之于ORM(持久层框架,如MyBatis.Hibernate等)正如JDBC之于数据库驱动. JDBC是Java语言定义的一套标准,规范了客户端程序访问关系数据库(如MySQL.O ...

  3. VS2012+openCV 2.4.8进行编译:VS2012 64位 使用OPENCV应用程序不能正常启动 (0xc000007b)怎么处理?

    [OpenCV入门教程之一] 安装OpenCV:OpenCV 2.4.8 +VS 开发环境配置 http://blog.csdn.net/poem_qianmo/article/details/198 ...

  4. 转载——githup的提交

    Github是管理软件开发的首选托管网站,12306的火车票插件一时让国内当时很多小白开发者(当然也包括我)认识到了这个网站.GitHub可以托管各种git库,并提供一个web界面,与 SourceF ...

  5. vector、map 内存释放

    一.vector void TestVector() { cout << "begin create vector" << endl; int iSize ...

  6. Oracle垃圾数据清理相关问题 分类: Oracle 2015-08-06 11:14 12人阅读 评论(0) 收藏

    垃圾数据清理,简单的说,就是删除不需要的那些数据,释放存储空间 最常用的就是delete命令.truncate命令,甚至是删除表空间重建,具体操作都很简单,不是本文的重点 下面,总结几个垃圾数据清理常 ...

  7. Turning off “Language Service Disabled” error message in VS2017

    We are getting the following "Error" message in our MVC web application in Visual studio 2 ...

  8. nginx 反向代理 Nginx 502 Bad Gateway

    查看错误日志: 摘要: nginx反向代理出现502错误 通过查看日志发现错误信息 2018/01/10 17:58:20 [crit] 8156#0: *1 connect() to 127.0.0 ...

  9. [OpenCV] Install OpenCV 3.3 with DNN

    OpenCV 3.3 Aug 3, 2017 OpenCV 3.3 has been released with greatly improved Deep Learning module and l ...

  10. [React] 03 - Intro: react.js in twelve demos

    Ref: React 入门实例教程 这算什么,react学习例子的十二门徒?哈哈 如何运行别人的react项目? Ref: [React全家桶入门之CODE]项目代码与使用方法 使用git克隆项目到本 ...