• shell 字符串分割与连接


    shell 字符串分割与连接
    1。字符串连接

    your_id=${USER}-on-${HOSTNAME}
    echo "$your_id"

    your_id=printf "%s%s%s" "$USER" "-on-" "$HOSTNAME"
    echo "$your_id"

    2.shell实现创建前一天时间的目录:
    复制代码

    1 aaa=date +%Y%m%d --date='1 days ago';
    2 bbb="mkdir "$aaa
    3 $bbb
    4
    5
    6
    7 filename=$1
    8 string1=exist
    9 string2=xi
    10 command="cat $filename | grep $string1 | grep $string2"
    11 eval $command
    12
    13
    14 [~/shell]# sh test.sh runshell.sh
    15 echo "exist;";
    16 echo "notexist;";

    复制代码
    3.linux shell substr(分割字符串)

    原来在shell中如果遇到要截取字符串的情况,就调用awk中的substr来实现。
    今天了解到一种新的方法,原来shell中本身就支持这种用法。
    如,有一字符串”12345678″,现在要截取第三个到第六个字符的字符串区间。
    则可以:

    1 [xok.la ~]$ export str="123456789"
    2 [xok.la ~]$ echo ${str:3:(6-3)}
    3 456
    4 [xok.la ~]$ unset str

    从以上第二个表达式可以看出这个用法,即:${str:3:(6-3)}
    可以归纳为:${str:begin:len},且支持表达式,如:6-3。

    补充一下从网上找到一些其他的用法:

    shell字符串的截取的问题:
    一、Linux shell 截取字符变量的前8位,有方法如下:

    1.expr substr "$a" 1 8
    2.echo $a|awk '{print substr(,1,8)}'
    3.echo $a|cut -c1-8
    4.echo $
    5.expr $a : '(.).*'
    6.echo $a|dd bs=1 count=8 2>/dev/null

    二、按指定的字符串截取
    1、第一种方法:
    ${varible##string} 从左向右截取最后一个string后的字符串
    ${varible#
    string}从左向右截取第一个string后的字符串
    ${varible%%string}从右向左截取最后一个string后的字符串
    ${varible%string
    }从右向左截取第一个string后的字符串
    “*”只是一个通配符可以不要

    例子:

    $ MYVAR=foodforthought.jpg
    $ echo ${MYVAR##fo}
    rthought.jpg
    $ echo ${MYVAR#
    fo}
    odforthought.jpg

    2、第二种方法:${varible:n1:n2}:截取变量varible从n1到n2之间的字符串。

    可以根据特定字符偏移和长度,使用另一种形式的变量扩展,来选择特定子字符串。试着在 bash 中输入以下行:

    $ EXCLAIM=cowabunga
    $ echo ${EXCLAIM:0:3}
    cow
    $ echo ${EXCLAIM:3:7}
    abunga

    这种形式的字符串截断非常简便,只需用冒号分开来指定起始字符和子字符串长度。

    三、按照指定要求分割:
    比如获取后缀名

    ls -al | cut -d "." -f2

    4.既然提到了cut命令,就再找一篇文档吧

    cut命令是用来剪下文本文件里的数据,文本文件可以是字段类型或是字符类型。下面给出应用实例:
    /> cat /etc/passwd
    root❌0:0:root:/root:/bin/bash
    bin❌1:1:bin:/bin:/sbin/nologin
    daemon❌2:2:daemon:/sbin:/sbin/nologin
    adm❌3:4:adm:/var/adm:/sbin/nologin
    ... ...
    /> cut -d : -f 1,5 /etc/passwd #-d后面的冒号表示字段之间的分隔符,-f表示取分割后的哪些字段
    root:root #这里取出的是第一个和第五个字段。
    bin:bin
    daemon:daemon
    adm:adm
    ... ...
    /> cut -d: -f 3- /etc/passwd #从第三个字段开始显示,直到最后一个字段。
    0:0:root:/root:/bin/bash
    1:1:bin:/bin:/sbin/nologin
    2:2:daemon:/sbin:/sbin/nologin
    3:4:adm:/var/adm:/sbin/nologin
    4:7:lp:/var/spool/lpd:/sbin/nologin
    ... ...
    这里需要进一步说明的是,使用cut命令还可以剪切以字符数量为标量的部分字符,该功能通过-c选项实现,其不能与-d选项共存。
    /> cut -c 1-4 /etc/passwd #取每行的前1-4个字符。
    /> cut -c-4 /etc/passwd #取每行的前4个字符。
    root
    bin:
    daem
    adm:
    ... ...
    /> cut -c4- /etc/passwd #取每行的第4个到最后字符。
    t❌0:0:root:/root:/bin/bash
    ❌1:1:bin:/bin:/sbin/nologin
    mon❌2:2:daemon:/sbin:/sbin/nologin
    ❌3:4:adm:/var/adm:/sbin/nologin
    ... ...
    /> cut -c1,4 /etc/passwd #取每行的第一个和第四个字符。
    rt
    b:
    dm
    a:
    ... ...
    /> cut -c1-4,5 /etc/passwd #取每行的1-4和第5个字符。
    root:
    bin:x
    daemo
    adm:x

    from https://www.cnblogs.com/gx-303841541/archive/2012/10/25/2738048.html

  • 相关阅读:
    ListView的使用(二)长按弹出上下文菜单
    自己遇到程序安装完图标不显示记录
    ListView的使用(一)
    Docker 构建私有镜像仓库
    DockerFile 编译语法详解
    Docker 添加容器SSH服务
    Docker 数据卷与容器互联
    Docker 镜像与容器管理
    Docker 容器简介与部署
    Zabbix-自带监控项与Kye
  • 原文地址:https://www.cnblogs.com/fb010001/p/12837331.html
Copyright © 2020-2023  润新知