zoukankan      html  css  js  c++  java
  • shell 截取字符串

    shell 截取字符串(cut, sed, awk)

    cut

    -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
    -c :以字符为单位进行分割。
    -d:自定义分隔符,默认为制表符。
    -f:与-d一起使用,指定显示哪个区域。
    -n:取消分割多字节字符。仅和-b标志一起使用。如果字符的最后一个字节落在由-b标志的List参数指示的范围之内,该字符将被写出;否则,该字符将被排除。
    
    -b
    .eg1:然后调用cut,即剪切字符串中的第2和第5个字节。
    echo"123abc"|cut -b 2,5
    -----------------------
    输出为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%   
    

    sed

    eg1:去除文本中的所有数字
    sed 's/[0-9]//g'
    [0-9]匹配一个数字,
    
    s/A/B/ 将A替换为B
    g表示全局替换为空格
    
    
    eg2:取当前的接口的ip,把所有的:替换为空格,然后打印出空格为分割的第几个数
    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}'
    
    

    awk

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

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

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

    start_line=`grep -in 'set task group' $ROOTPATH/../../core/helloworld.c |awk 'BEGIN {FS=":"} {print $1}'`
    
  • 相关阅读:
    POJ 2017 No Brainer(超级水题)
    POJ 2017 No Brainer(超级水题)
    Poj1207 The 3n + 1 problem(水题(数据)+陷阱)
    Poj1207 The 3n + 1 problem(水题(数据)+陷阱)
    Poj1159 Palindrome(动态规划DP求最大公共子序列LCS)
    Poj1159 Palindrome(动态规划DP求最大公共子序列LCS)
    Poj1050_To the Max(二维数组最大字段和)
    Poj1050_To the Max(二维数组最大字段和)
    Poj 2602 Superlong sums(大数相加)
    Poj 2602 Superlong sums(大数相加)
  • 原文地址:https://www.cnblogs.com/michaelcjl/p/15190149.html
Copyright © 2011-2022 走看看