• 【Shell】shell截取字符串方式(cut、awk、sed命令)


    1.cut

    -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
    -c :以字符为单位进行分割。

    -d:自定义分隔符,默认为制表符。

    -f:与-d一起使用,指定显示哪个区域。

    -n:取消分割多字节字符。仅和-b标志一起使用。如果字符的最后一个字节落在由-b标志的List参数指示的范围之内,该字符将被写出;否则,该字符将被排除。

    -b

    .eg1:然后调用cut,即剪切字符串中的第2和第5个字节。

    echo"123abc"|cut -b 2,5

    先输出123abc

    输出为2b

    .eg2:cut掉11-14位置的字符

     echo "123456789abcdefghjklmnopq" | cut -b 11-14

    输出为bcde

    -c

    用法示例输出/etc/passwd文件每一行的前4个字符$ sudo cut -c 1-4 /etc/passwd

          取完之后     

    -d

     cut命令用于列提取,默认分隔符是tab键。

    选项:-d指定分隔符,-f指定提取第几列

    eg1: 以%作为分隔符 输出第一个%前的区域1的东西,输出区域2的东西       

    root@ROUTER:~# echo "CPU:  busy 14%  (system=10% user=3% nice=0% idle=85%)" | cut -d \% -f 1
    CPU:  busy 14
    root@ROUTER:~# echo "CPU:  busy 14%  (system=10% user=3% nice=0% idle=85%)" | cut -d \% -f 2
      (system=10
    root@ROUTER:~# echo "CPU:  busy 14%  (system=10% user=3% nice=0% idle=85%)" | cut -b 11-14 | cut -d \% -f 1
     14
    root@ROUTER:~# echo "CPU:  busy 14%  (system=10% user=3% nice=0% idle=85%)" | cut -b 11-14 
     14%

    2.sed

     eg1:去除文本中的所有数字

    sed 's/[0-9]//g'

    [0-9]匹配一个数字,

    s/A/B/ 将A替换为B
    g表示全局替换为空格

    eg2:取当前的接口的ip,把所有的:替换为空格,然后打印出空格为分割的第几个数

    root@Evelyn:~# ifconfig
    ens33     Link encap:Ethernet  HWaddr 00:0c:29:12:22:f9  
              inet addr:192.168.23.44  Bcast:192.168.23.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:1291454 errors:5 dropped:98200 overruns:0 frame:0
              TX packets:645293 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:366412938 (366.4 MB)  TX bytes:261011986 (261.0 MB)
              Interrupt:19 Base address:0x2000 
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:1718636 errors:0 dropped:0 overruns:0 frame:0
              TX packets:1718636 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1 
              RX bytes:1136827513 (1.1 GB)  TX bytes:1136827513 (1.1 GB)
    
    root@Evelyn:~# ifconfig ens33 | grep Bcast | sed 's/:/ /g' | awk '{print $3}'
    192.168.23.44

    eg3:取出延时时间的数字

     ping 192.168.120.1 -s 1000 -c 5 | grep time | sed 's/=/ /g' | awk '{print $10}'

     3. awk

    ①语法格式:awk  '条件1{动作1}条件2{动作2}...'  文件

    条件,一般使用关系表达式作为条件,如a>10。动作,格式化输出或流程控制语句

    awk一次读入一整行,默认以tab键或者空格为分隔符将一行分为多个字段,表示为$1、$2、$3...其中$0表示文件名

     

  • 相关阅读:
    [LeetCode] String to Integer (atoi) 解题报告
    [LeetCode] Spiral Matrix 解题报告
    推导基姆拉尔森公式根据日期计算星期
    gdb常用命令的用法
    利用基姆拉尔森公式根据日期计算星期
    RIM推出BlackBerry SDK 助力开发者多种应用程序开发
    ERP环境下物料清单的数据结构研究[转]
    VSTO EXCEL篇学习笔记五【原】
    高德纳传奇[转]
    PLM中BOM核心技术的研究[转]
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/10066821.html
Copyright © 2020-2023  润新知