• linux下常见的字符串处理


    linux下有许多对字符串文本的处理工具,diff,grep,awk,sed等等。。

    diff

    比较两个文件的不同

    [root@bogon diff]# diff file1 file2
    

    以高亮的形式在vim编辑器中显示两个文件的不同之处

    vimdiff
    

    grep

    用于匹配字符,或者查找文件中的匹配项

    [root@bogon diff]# ls | grep file
    file1
    file2
    

    重要参数

    -i  #忽略大小写
    -n  #显示结果所在行的行号
    -c  #显示结果个数
    -v  #反向过滤
    -r + 目录名       ###在目录下查找含有关键字的内容
    -E "关键字1|关键字2"    ###过滤多个关键字
    

    sort

    用于排序

    -n  #纯数字
    -r  #倒序显示
    -u  #去掉重复行
    -t  #指定分隔符
    -k  #指定排序的列
    

    用法实例
    sort -t: -k3 -n /etc/passwd
    将文本以:为分隔符,以第三列作为(uid)排序标准,-n表示排序是以纯数字来排,而不是以字母的顺序。

    uniq

    重复行处理,uniq只会认为连续的重复的行才是重复行。
    若想删除掉所有的重复的行,可以先排序然后uniq

    -c #统计重复行的个数
    -d #显示重复行
    -u #显示唯一行
    

    tr

    转换字符大小写
    tr 'a-z' A-Z < 文件名 ##将所有的大写转换成大写
    tr -d 关键字 文件名 ##将所有关键字删除

    sed

    sed 's/nologin/login/g' file    #将file文件中的所有nologin替换成login
    sed '1,5s/nologin/login/g' file #将1-5行的所有nologin换成login
    sed '/games/,/nobody/s/nologin/login/g' file #将games到nobody之间的nologin换成login
    sed -e 's/nologin/login/g' -e 's/sbin/bin/g' #多条替换规则一起用
    sed 3d file    #不显示第三行
    sed 3,7d file   #不显示3-7行
    sed 3,7p file   #重复显示3-7行
    sed -n 3,7p file  #只显示3-7行
    touch rule        #建立规则文件
    sed -f rule file  #使用规则文件更改输出
    

    以上的操作均不会对原来的文本进行修改,若要修改,需要在前面加上-i参数

    awk

    awk是一个超强的文本处理工具,甚至可以当做一个脚本语言来使用。这里只介绍一种常用的使用方式,那就是进行字符的分割。
    以截取自己的局域网ip为例

    [root@linux hexo]# ifconfig wlp1s0
    wlp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.103  netmask 255.255.255.0  broadcast 192.168.1.255
            inet6 fe80::c6d9:87ff:fe5a:68f1  prefixlen 64  scopeid 0x20<link>
            ether c4:d9:87:5a:68:f1  txqueuelen 1000  (Ethernet)
            RX packets 313404  bytes 392626230 (374.4 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 213498  bytes 26747428 (25.5 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    [root@linux hexo]# ifconfig wlp1s0|grep -w "inet"
            inet 192.168.1.103  netmask 255.255.255.0  broadcast 192.168.1.255
    
    
    [root@linux hexo]# ifconfig wlp1s0|grep -w "inet"|awk -F" " '{print $2}'
    192.168.1.103
    

    awk 的主要用法 -F参数后面接分隔的字符" "
    后面接'{ }' $1 $2..分别代表分隔出来的每一列,print $1 就是输出这一列

    这只是awk的一种用法而已,awk算得上一个脚本语言,有自己独立的语法,就不一一概述

  • 相关阅读:
    部署K2 Blackpearl流程时出错(与基础事务管理器的通信失败或Communication with the underlying transaction manager has failed.)
    用SQL命令将查询结果集导出为文本文件
    SQL函数计算两个日期间的工作日天数
    CommonJS模块加载方法
    async 属性
    如何用VS.NET2005调式.asp和.aspx混合的web系统
    对web.config文件的节点进行加解密
    [转]看似简单的问题 静态方法和实例化方法的区别
    单引号(')和双引号(")
    从一个时间段中查找出星期为“Sunday”的日期
  • 原文地址:https://www.cnblogs.com/0x12345678/p/5622007.html
Copyright © 2020-2023  润新知