一:基本

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

二: 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. Xmpp获取离线消息

    文章只是选取了其中一段,无XMPP基础的人可能看起来有点复杂; 假设我们注册了一个用户,用户名叫shimiso,那么我们如何让shimiso这个用户一登陆就取到离线消息呢? PPConnection. ...

  2. 水塘抽样(Reservoir Sampling)问题

    水塘抽样是一系列的随机算法,其目的在于从包含n个项目的集合S中选取k个样本,其中n为一很大或未知的数量,尤其适用于不能把所有n个项目都存放到主内存的情况. 在高德纳的计算机程序设计艺术中,有如下问题: ...

  3. cordova打包vue2(webpack)android、ios app

    使用cordova打包vue2(webpack)app for android ios1.vue项目通过vue-cli脚手架建立项目,使用webpack进行打包,下边是一整套命令. #npm 版本最好 ...

  4. Java知多少(96)绘图之设置字型和颜色

    Java绘图中,显示文字的方法主要有三种:(1)drawString(String str,int x,int y):在指定的位置显示字符串.(2)drawChars(char data[],int ...

  5. Hibernate HQL的使用

    1.简单查询(查询所有) Session session=HibernateUtil.getSessionFactory().getCurrentSession(); Transaction tx=s ...

  6. Unity Remote远程调试

    http://www.cnblogs.com/qinghuaideren/p/3623368.html http://blog.csdn.net/u012741077/article/details/ ...

  7. ios开发之--valueForKeyPath的用法

    1.获取数组中的平均值,最大值,最小值,总和,代码如下: NSArray *ary = @[@,@,@,@,@,@,@]; [self caculateArray:ary]; -(NSString * ...

  8. 斯坦福2011秋季 iPad and iPhone Application Development 资源

    1. MVC and Introduction to Objective-C (September 27, 2011) - HD 2. My First iOS App (September 29, ...

  9. 在Android源码树中添加userspace I2C读写工具(i2c-util)

    在Android源码树中添加userspace I2C读写工具(i2c-util) http://blog.csdn.net/21cnbao/article/details/7919055 分类: A ...

  10. mysql无法生成log文件

    做服务器主从配置时,发现/var/log/mysql下面一直没有log文件,明明配置文件/etc/mysql/mysql.conf.d/mysqld.cnf也开启log了. general_log_f ...