精华内容
下载资源
问答
  • bash 字符串分割How to split a string by string in Bash? For example, 如何在Bash中按字符串分割 字符串 ? 例如, "a string separated byspace" => ["a", "string", "separated", "by", "space"] and 和 ...

    bash 字符串分割

    How to split a string by string in Bash? For example,

    如何在Bash中按字符串分割 字符串 ? 例如,

    "a string   separated byspace" =>
    ["a", "string", "separated", "by", "space"]
    

    and

    "a,string,separated,by,comma" =>
    ["a", "string", "separated", "by", "comma"]

    You can convert a string to an array using the grammar like

    您可以使用如下语法将字符串转换为数组

    inarr=(${a})

    If the delimiter is not space and delimiter is a single character or a string consisting of 1 or more of the characters, set the IFS like

    如果定界符不是空格,并且定界符是单个字符或由1个或多个字符组成的字符串 ,则将IFS设置为

    IFS=',' inarr=(${a})

    For the examples in the question:

    对于问题中的示例:

    For the space separated string:

    对于以空格分隔的字符串:

    $ a="a string   separated by space"
    $ inarr=(${a})

    Check the result:

    检查结果:

    $ echo ${inarr[@]}
    a string separated by space

    For the ‘,’ separated string, set the IFS:

    对于以','分隔的字符串,设置IFS

    $ a="a,string,separated,by,comma";
    $ IFS=',' inarr=(${a});

    Check the result:

    检查结果:

    $ echo ${inarr[@]}
    a string separated by comma
    Answered by Eric Z Ma.
    埃里克·马(Eric Z Ma)回答。

    翻译自: https://www.systutorials.com/how-to-split-a-string-by-string-in-bash/

    bash 字符串分割

    展开全文
  • Bash 字符串运算符 同其他编程语言一样,在 Bash 中,字符串也是一种数据类型。只要以" “引起来,不论是数字还是字符,都会被 Bash 视为字符串。如"Welcome to W3Cschool”。 字符串运算符 = 等于运算符,等于时...

    Bash 字符串运算符

    同其他编程语言一样,在 Bash 中,字符串也是一种数据类型。只要以" “引起来,不论是数字还是字符,都会被 Bash 视为字符串。如"Welcome to W3Cschool”。

    字符串运算符

    = 等于运算符,等于时返回true。
    语法示例:

    Str1 = Str2
    

    应用示例:

    #!/bin/bash
    
    Str1="W3Cschool.cn"
    Str2="W3C"
    
    if [ $Str1 = $Str2 ];
    then
    echo "True"
    else
    echo "False"
    fi
    

    执行后得到以下结果:

    False
    

    != 不等于运算符,不等于时返回true。
    语法示例:

    Str1 != Str2
    

    应用示例:

    #!/bin/bash
    
    Str1="W3Cschool.cn"
    Str2="W3C"
    
    if [[ $Str1 != $Str2 ]];
    then
    echo "True"
    else
    echo "False"
    fi
    

    执行后得到以下结果:

    True
    

    检查字符串长度是否为零。

    • -n,不为零时返回true。
      语法示例:
    -n Str
    

    应用示例:

    #!/bin/sh
    
    Str="Welcome to W3Cschool"
    
    if [ -n $Str ];
    then
     echo "True"
    else
        echo "False"
    fi
    

    执行后返回以下结果:

    True
    
    • -z为零时。返回true。
      语法示例:
    -z Str
    

    应用示例:

    #!/bin/sh
    
    Str="Welcome to W3Cschool"
    
    if [ -z $Str ];
    then
     echo "True"
    else
        echo "False"
    fi
    

    执行后返回以下结果:

    False
    

    检查字符串长度是否为空。

    • -str不为空时,返回true。
      语法示例:
    -str Str
    

    应用示例:

    #!/bin/sh
    
    Str="Welcome to W3Cschool"
    
    if [ -str $Str ];
    then
     echo "True"
    else
        echo "False"
    fi
    

    执行后返回以下结果:

    True
    

    Bash 查找字符串长度

    在某些情况下,您可能需要了解字符串的长度才能对该字符串执行某些操作。由于在 Bash 中没有相关的内置函数,所以需要参考以下几种方法来学习查找字符串的长度。

    方法一

    在查找字符串长度的方法中,最简单的是使用#符号。
    语法示例:

    $(#String)
    

    应用示例:

    #!/bin/bash
    
    Str="Welcome to W3Cshool.cn"
    length=${#Str}
    
    echo "Length of '$Str' is $length"
    

    执行后得到以下结果:

    Length of 'Welcome to W3Cscholl.cn' is 23
    
    方法二

    也可将expr命令与length关键字一起使用。
    语法示例:

    `expr length "$String"`
    

    应用示例:

    #!/bin/bash 
    
    Str="Welcome to W3Cscholl.cn"
    length=`expr length "$Str"`
    
    echo "Length of '$Str' is $length"
    

    执行后得到以下结果:

    Length of 'Welcome to W3Cscholl.cn' is 23
    
    方法三

    您也可以选择使用expr “$String”: ’ .*'来查找字符串长度。
    语法示例:

    expr "$String": ' .*'
    

    应用示例:

    #!/bin/bash
    
    Str="Welcome to W3Cscholl.cn"
    length=`expr "$Str" : '.*'`
    
    echo "Length of '$Str' is $length"
    

    执行后得到以下结果:

    Length of 'Welcome to W3Cscholl.cn' is 23
    
    方法四

    您也可以选择使用wc命令来查找字符串的长度。
    应用示例:

    #!/bin/bash
    
    Str="Welcome to W3Cscholl.cn"
    length=`echo $Str | wc -c`
    
    echo "Length of '$Str' is $length"
    

    执行后得到以下结果:

    Length of 'Welcome to W3Cscholl.cn' is 23
    
    方法五

    或者您可以选择使用awk命令来查找字符串长度。
    应用示例:

    #!/bin/bash
    
    Str="Welcome to W3Cscholl.cn"
    length=`echo $Str |awk '{print length}'`
    
    echo "Length of '$Str' is $length"
    

    执行后得到以下结果:

    Length of 'Welcome to W3Cscholl.cn' is 23
    

    注:
    在这五个方法中,最常用的还是方法一。简单快捷永远是最优选。
    为避免在某些特殊情况下需要更换操作方法,建议您脚踏实地的学习哦。

    Bash 拆分字符串

    在某些情况下,您可能需要先拆分字符串以进行您下一步的操作。由于在 Bash 中不包含类似其他编程语言中的split内置函数,所以需要参考以下几种方法来学习如何拆分字符串。

    内部域分隔符

    您可以使用$IFS在 Bash 中将字符串细分。

    • IFS被称为“内部域分隔符”,是一种 set 变量。
    • 当 bash shell 处理“命令替换”或“参数替换”时,会根据IFS的值来拆解读入的变量,然后对其进行处理。
    • IFS的默认值为空格符,也可使用\t,\n等值作为分隔符设置给IFS。
      示例:
    #!/bin/bash
    
    read -p "Enter any string separated by space: " str  #读取字符串的值。
    
    IFS=' ' #将空格设置为分隔符。
    read -ra strArr <<<"$str" #将字符串读取到数组中,并由 IFS 分配分隔符。
    
    for i in "${strArr[@]}"; #遍历访问数组中的每个元素。
    do
    echo "$i"
    done
    

    执行后得到以下结果:

    Enter any string separated by space:welcome to W3Cschool
    welcome
    to
    W3Cschool
    
    readarray 命令

    在不使用IFS的情况下,您可以使用 readarray命令加上-d选项对字符串进行分割。
    示例:

    #!/bin/bash
    
    read -p "Enter any string separated by colon(:) " str #读取字符串的值,并将分隔符设置为 : 。
    
    readarray -d : -t strArr <<<"$str" #根据设置的分隔符 : 来拆分字符串。
    
    printf "\n"
    
    #遍历打印输出数组中的每一个值
    for (( n=0; n < ${#strArr[*]}; n++ ))
    do
    echo "${strArr[n]}"
    done
    

    执行后得到以下结果:

    Enter any string separated by colon(:) welcome:to:W3Cschool
    
    welcome
    to
    W3Cschool
    
    Trim命令

    您还可以使用tr命令来分割字符串。tr用于在原有定界符的基础上,对字符串进行拆分。
    示例:

    #!/bin/bash
    
    str="welcome;to;W3Cschool!" #定界符 ;
    arr=($(echo $str | tr ";" "\n"))#将定界符定义给 tr
    
    for i in "${arr[@]}"
    do
    echo $i
    done
    

    执行后得到以下结果:

    welcome
    to
    W3Cschool!
    

    Bash 提取子字符串

    在 Bash 中可以使用多种方法从字符串中提取子串。子串就是包含在其父字符串中的子字符串。

    基础语法定义

    提取子字符串的命令是 Bash 的内置命令,相比于其他的字符串操作,给予了很大的便利。

    语法:
    ${variable:offset:length}
    

    注:

    • variable是目标字符串的变量名称。
    • offset位置,指定从何处开始提取字符串。
    • length偏移量,指定开始执行的字符范围。
    应用示例

    从字符串开头提取至指定字符结束

    #!/bin/bash
    
    echo "String: welcome to W3Cschool."
    str="welcome to W3Cschool."
    
    echo "Total characters in a String: ${#str} "
    
    substr="${str:0:10}"
    
    echo "Substring: $substr"
    echo "Total characters in Substring: ${#substr} "
    

    执行后得到以下结果:

    String: welcome to W3Cschool.
    Total characters in a String:21
    Substring: welcome to
    Total characters in Substring:10
    

    从指定字符开始提取至结尾结束

    #!/bin/bash
    
    str="welcome to W3Cschool."
    substr="${str:12}"
    echo "$substr"
    

    执行后得到以下结果:

    W3Cschool.
    

    Bash 拼接字符串

    字符串的拼接是任何一种编程语言的硬性通用要求之一。在 shell 中字符串的拼接十分简单,但仍然需要注意细节上的处理。

    基本语法
    str3="${str1}${str2}"
    

    注:

    • {}作用为帮助解释器识别变量边界。
    • 在此出于严谨考虑,最好应养成随手添加{}的习惯,避免疏忽导致脚本执行效果未达到您的期望。
    示例
    #!/bin/bash
    
    str1="welcome to"
    
    str2=" W3Cschool."
    
    str3="${str1}${str2}"
    str4="Hello user,${str1}${str2}"
    
    echo $str3
    echo $str4
    
    注:
    • 在此出于严谨考虑,最好应养成随手添加 " "的习惯,避免疏忽导致脚本执行效果未达到您的期望。
    • 在代码第8行,若不以 " "将整个语句引起,解释器在遇到空格时将会视为字符串结束,空格之后的内容将作为其他变量或命令进行解析。
      执行后得到以下结果:
    welcome to W3Cschool.
    Hello user,welcome to W3Cschool.
    
    展开全文
  • Bash字符串处理(与Java对照) - 13.字符串数组连接(以指定分隔符合并) In Java 以指定的分隔符将字符串数组连接成一个字符串的源码 以下代码来自:...

    Bash字符串处理(与Java对照) - 13.字符串数组连接(以指定分隔符合并)

    In Java

    以指定的分隔符将字符串数组连接成一个字符串的源码

    以下代码来自:http://www.oschina.net/code/explore/jsoup-1.4.1/helper/StringUtil.java

        /***
         * Join a collection of strings by a seperator
         * @param strings collection of string objects
         * @param sep string to place between strings
         * @return joined string
         */
        public static String join(Collection<String> strings, String sep) {
            return join(strings.iterator(), sep);
        }
    
        /***
         * Join a collection of strings by a seperator
         * @param strings iterator of string objects
         * @param sep string to place between strings
         * @return joined string
         */
        public static String join(Iterator<String> strings, String sep) {
            if (!strings.hasNext())
                return "";
    
            String start = strings.next();
            if (!strings.hasNext()) // only one, avoid builder
                return start;
    
            StringBuilder sb = new StringBuilder(64).append(start);
            while (strings.hasNext()) {
                sb.append(sep);
                sb.append(strings.next());
            }
            return sb.toString();
        }
     

    StringUtils.join

    提供了九种join方法

    org.apache.commons.lang.StringUtils join方法 写道
    static String join(Collection collection, char separator)
    Joins the elements of the provided Collection into a single String containing the provided elements.
    static String join(Collection collection, String separator)
    Joins the elements of the provided Collection into a single String containing the provided elements.
    static String join(Iterator iterator, char separator)
    Joins the elements of the provided Iterator into a single String containing the provided elements.
    static String join(Iterator iterator, String separator)
    Joins the elements of the provided Iterator into a single String containing the provided elements.
    static String join(Object[] array)
    Joins the elements of the provided array into a single String containing the provided list of elements.
    static String join(Object[] array, char separator)
    Joins the elements of the provided array into a single String containing the provided list of elements.
    static String join(Object[] array, char separator, int startIndex, int endIndex)
    Joins the elements of the provided array into a single String containing the provided list of elements.
    static String join(Object[] array, String separator)
    Joins the elements of the provided array into a single String containing the provided list of elements.
    static String join(Object[] array, String separator, int startIndex, int endIndex)
    Joins the elements of the provided array into a single String containing the provided list of elements.
     

     

    In Bash

    将数组中的字符串合并。

    数组的定义方式如下:

    ARR=(S1 S2 S3)

     

    以空格分隔

    格式1:STR=${ARR[*])

    格式2:STR=${ARR[@])

    格式3:STR="${ARR[*]}"

    格式4:STR="${ARR[@]}"

     

    [root@jfht ~]# ARR=(S1 S2 S3)

    [root@jfht ~]# echo "${ARR[*]}"
    S1 S2 S3

    [root@jfht ~]# echo "${ARR[@]}"        
    S1 S2 S3
    [root@jfht ~]#

     

    不分隔

    str_join() {

        local dst

        for s in "$@"

        do

            dst=${dst}${s}

        done

        echo "$dst"

    }

     

    错误:str_join "$ARR[@]"

    错误:str_join $ARR[@]

    错误:str_join "$ARR[*]"

    错误:str_join $ARR[*]

     

    [root@jfht ~]# declare -f str_join
    str_join ()
    {
        local dst;
        for s in "$@";
        do
            dst=${dst}${s};
        done;
        echo "$dst"
    }

    [root@jfht ~]# ARR=(yes no 'hello world')
    [root@jfht ~]# str_join ${ARR[*]}
    yesnohelloworld
    [root@jfht ~]# str_join ${ARR[@]}
    yesnohelloworld
    [root@jfht ~]# str_join "${ARR[*]}"
    yes no hello world
    [root@jfht ~]# str_join "${ARR[@]}"
    yesnohello world
    [root@jfht ~]#

     

    以指定分隔符来分隔

    实现方式一

    str_join_sep ()
    {

        local sep="$1"

        shift
        local dst
        for s in "$@"
        do

            if [ "$dst" ]; then
                dst=${dst}${sep}${s}

            else

                dst=${s}

            fi
        done
        echo "$dst"
    }

     

    正确:str_join_sep "$SEP" "$ARR[@]"

    注意双引号的使用。

     

    [root@jfht ~]# declare -f str_join_sep
    str_join_sep ()
    {
        local sep="$1";
        shift;
        local dst;
        for s in "$@";
        do
            if [ "$dst" ]; then
                dst=${dst}${sep}${s};
            else
                dst=${s};
            fi;
        done;
        echo "$dst"
    }
    [root@jfht ~]# ARR=(yes no 'hello world')    
    [root@jfht ~]# SEP=,
    [root@jfht ~]# str_join_sep "$SEP" "${ARR[@]}"
    yes,no,hello world
    [root@jfht ~]#

     

    实现方式二

    str_join_sep ()
    {

        local sep="$1"

        shift
        local dst="$1"

        shift
        for s in "$@"
        do

            dst=${dst}${sep}${s}

        done
        echo "$dst"
    }

     

    [root@jfht ~]# declare -f str_join_sep
    str_join_sep ()
    {
        local sep="$1";
        shift;
        local dst="$1";
        shift;
        for s in "$@";
        do
            dst=${dst}${sep}${s};
        done;
        echo "$dst"
    }
    [root@jfht ~]# ARR=(yes no 'hello world')
    [root@jfht ~]# SEP=,
    [root@jfht ~]# str_join_sep "$SEP" "${ARR[@]}"
    yes,no,hello world
    [root@jfht ~]# SEP=:
    [root@jfht ~]# str_join_sep "$SEP" "${ARR[@]}"
    yes:no:hello world
    [root@jfht ~]# SEP='|'

    注意加上单引号,否则Bash认为是管道线。
    [root@jfht ~]# str_join_sep "$SEP" "${ARR[@]}"
    yes|no|hello world
    [root@jfht ~]#

     

     

    本文链接:http://codingstandards.iteye.com/blog/1180348   (转载请注明出处)

    返回目录:Java程序员的Bash实用指南系列之字符串处理(目录) 

    上节内容:Bash字符串处理(与Java对照) - 12.字符串连接

    下节内容:Bash字符串处理(与Java对照) - 14.判断是否包含另外的字符串(多达6种方法)

     

     

    展开全文
  • BASH字符串处理:字符串分割为数组

    千次阅读 2012-11-01 19:22:28
    ...Bash字符串处理(与Java对照) - 25.字符串分割(成数组) In Java String.split  String[] split(String regex)  根据给定的正则表达式的匹配来拆分此字符串。  String[]

    http://codingstandards.iteye.com/blog/1164910

    Bash字符串处理(与Java对照) - 25.字符串分割(成数组)

    In Java

    String.split

     String[]     split(String regex)
              根据给定的正则表达式的匹配来拆分此字符串。
     String[]     split(String regex, int limit)
              根据匹配给定的正则表达式来拆分此字符串。

     

    In Bash

    简单介绍一下Bash中的数组的定义和使用方法

    在Bash中,每个变量都可以作为一维数组使用,并且Bash也只支持一维数组。

    $VAR等同于${VAR[0]}

     

    还有一种多此一举的声明数组的方法:declare -a VAR

     

    数组数据的设置方式有:

    VAR=(v1 v2 v3)

    VAR=([0]=v0 [1]=v1 [2]=v2)

    VAR[0]=v0

     

    引用数组元素的方式:

    $VAR  ${VAR}  ${VAR[0]}  第0个元素

    ${VAR[n]}  第n个元素(n从0开始计算)

     

    引用整个数组:

    ${VAR[*]}  ${VAR[*]}   这两种方式等同,会把数组展开。

    "${VAR[*]}"  表示把数组拼接在一起的整个字符串,如果作为参数传递,会把整个字符串作为一个参数。

    "${VAR[@]}"  如果作为参数传递,表示把数组中每个元素作为一个参数,数组有多少个元素,就会展开成多少个参数。

     

    计算数组元素长度:

    ${#VAR[*]}  ${#VAR[@]}   不是 ${#VAR},因为它等同于 ${#VAR[0]}


    注意:数组元素长度 != 最大索引 + 1,因为Bash的数组是稀疏数组(Sparse array)。

    [root@web ~]# a[1]=1 
    [root@web ~]# a[1000]=1000 
    [root@web ~]# declare -p a 
    declare -a a='([1]="1" [1000]="1000")'
    [root@web ~]# echo "$a" 

    [root@web ~]# echo "$a[1]" 
    [1]
    [root@web ~]# echo "${a[@]}" 
    1 1000
    [root@web ~]# echo "${#a[@]}" 
    2
    [root@web ~]#

     

    遍历数组元素:(注意双引号)

    for ELEM in "${ARRAY[@]}"

    do

        echo $ELEM

    done

     

    以空白作为分隔符来拆分字符串构造数组

    ARR=($STR)

    注意$STR不能加引号。

     

    [root@jfht ~]# STR="Hello World" 
    [root@jfht ~]# ARR=($STR) 
    [root@jfht ~]# declare -p ARR 
    declare -a ARR='([0]="Hello" [1]="World")'
    [root@jfht ~]#

     

    用指定分隔符来拆分字符串构造数组

    如果分隔符不是空白,而是别的,那么需要借助IFS变量。

    default IFS (Internal Field Separator, which is space/tab/new line)

     

    [root@jfht ~]# echo $PATH 
    /usr/kerberos/sbin:/usr/kerberos/bin:/usr/apache/apache-ant-1.7.1/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    [root@jfht ~]# IFS=: DIRS=($PATH) 
    [root@jfht ~]# declare -p DIRS   
    declare -a DIRS='([0]="/usr/kerberos/sbin" [1]="/usr/kerberos/bin" [2]="/usr/apache/apache-ant-1.7.1/bin" [3]="/usr/local/sbin" [4]="/usr/local/bin" [5]="/sbin" [6]="/bin" [7]="/usr/sbin" [8]="/usr/bin" [9]="/root/bin")'
    [root@jfht ~]#

     

    但是下面的方式是不行的。

    [root@jfht ~]# echo $PATH 
    /usr/kerberos/sbin:/usr/kerberos/bin:/usr/apache/apache-ant-1.7.1/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    [root@jfht ~]# IFS=: declare -a DIRS=($PATH) 
    [root@jfht ~]# declare -p DIRS 
    declare -a DIRS='([0]="/usr/kerberos/sbin:/usr/kerberos/bin:/usr/apache/apache-ant-1.7.1/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin")'
    [root@jfht ~]#

     

    使用read -a来拆分字符串构造数组

    All work and no play makes Jack a dull boy.
    只会用功不玩耍,聪明孩子也变傻。

     

    [root@jfht ~]# PROVERB="All work and no play makes Jack a dull boy." 
    [root@jfht ~]# read -a WORDS <<<$PROVERB 
    [root@jfht ~]# echo "$WORDS" 
    All
    [root@jfht ~]# echo "${#WORDS}" 
    3

    [root@jfht ~]# echo "${WORDS[*]}" 
    All work and no play makes Jack a dull boy.
    [root@jfht ~]# echo "${WORDS[@]}" 
    All work and no play makes Jack a dull boy.
    [root@jfht ~]# echo "${#WORDS[*]}" 
    10
    [root@jfht ~]# echo "${#WORDS[@]}" 
    10

     

    前面的例子中要分割的字符串是以空格分割的,现在举一个以:分割的例子。

    [root@jfht ~]# echo $IFS 

    [root@jfht ~]# IFS=: read -r -a DIRS <<<"$PATH" 
    [root@jfht ~]# echo $IFS 

    [root@jfht ~]# declare -p DIRS 
    declare -a DIRS='([0]="/usr/kerberos/sbin" [1]="/usr/kerberos/bin" [2]="/usr/apache/apache-ant-1.7.1/bin" [3]="/usr/local/sbin" [4]="/usr/local/bin" [5]="/sbin" [6]="/bin" [7]="/usr/sbin" [8]="/usr/bin" [9]="/root/bin")'
    [root@jfht ~]# 

     

    下面的例子是将当前工作目录以/进行分割。

    [root@jfht ctmw]# echo $PWD 
    /root/work191/ct08/src/ctmw
    [root@jfht ctmw]# IFS=/ read -r -a PARTS <<<$PWD 
    [root@jfht ctmw]# declare -p PARTS 
    declare -a PARTS='([0]=" root work191 ct08 src ctmw")'
    [root@jfht ctmw]# 
    [root@jfht ctmw]# IFS=/ read -r -a PARTS <<<"$PWD" 
    [root@jfht ctmw]# declare -p PARTS                 
    declare -a PARTS='([0]="" [1]="root" [2]="work191" [3]="ct08" [4]="src" [5]="ctmw")'
    [root@jfht ctmw]#

     

    使用cut命令分隔字符串

    echo "$STR" | cut -f $N

    以TAB分隔,打印第N个子串值,N从1开始计数。

    echo "$STR" | cut -d "$DELIM" -d $N

    以指定DELIM分隔,打印第N个子串值,N从1开始计数。

    其中,-d部分也可以是$N1,$N2,$N3的形式,即输出多个子串。

     

    A good beginning is half done.
    良好的开端是成功的一半。

     

    [root@jfht ~]# STR="A good beginning is half done." 
    [root@jfht ~]# echo $STR | cut -d ' ' -f 2          
    good

     

    [root@jfht ~]# echo $PATH 
    /usr/kerberos/sbin:/usr/kerberos/bin:/usr/apache/apache-ant-1.7.1/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    [root@jfht ~]# echo $PATH | cut -d ':' -f 3 
    /usr/apache/apache-ant-1.7.1/bin

    [root@jfht ~]# echo $PATH | cut -d ':' -f 3,5 
    /usr/apache/apache-ant-1.7.1/bin:/usr/local/bin

     

    使用awk命令分隔字符串

    echo "$STR" | awk '{print $1}'

    echo "$STR" | awk '{print $2}'

    注意:awk后面的参数用单引号,不能用双引号。

     

    [root@jfht ~]# STR="A good beginning is half done." 
    [root@jfht ~]# echo "$STR" | awk '{print $1}' 
    A
    [root@jfht ~]# echo "$STR" | awk '{print $2}' 
    good
    [root@jfht ~]# echo "$STR" | awk '{print $5,$6}' 
    half done.

     

     

     

     

    展开全文
  • bash字符串操作

    千次阅读 2013-10-23 00:29:42
    在这一篇里,我会给你们介绍如何用 Bash 来完成各种各样的字符串操作。我会选择用最好的 Bash 做法,各种常见的语法和技巧,向各位阐明如何用 Bash 内置的命令和 Bash 编程语言来完成各式各样的任务。 1. 生成从 ...
  • 解决方案 Another way: x=$'Some\nstring' readarray -t y , if you don't have bash 4, the bash 3.2 equivalent: IFS=$'\n' read -rd '' -a y (${x//$'\n'/ }) This, however, will not function correctly if ...
  • bash 字符串处理

    2017-12-26 16:52:59
    {varname}, 为防止变量在字符串中产生歧义建议使用第二种方式, 引用未定义的变量其值为空。 ct @ehbio :~ $ a= "EHBIO" ct @ehbio :~ $ echo ${ a} EHBIO ct @ehbio :~ $ echo $a EHBIO #出错了 ...
  • Bash字符串处理(与Java对照) - 2.字符串的表示方式(字符串常量) In Java 你懂的! 使用单引号表示字符常量:'c' 使用双引号表示字符串常量:"hello world"   Java字符转义 \u???? 四位十...
  • Bash字符串处理(与Java对照) - 12.字符串连接 In Java String.concat String concat(String str)  将指定字符串联到此字符串的结尾。   String newStr = str.concat(str2);   StringBuilder....
  • 警告:需要bash4+以上的版本 这是cut,awk和其他工具的替代品。 二、示例函数: split() { IFS=$'\n' read -d "" -ra arr <<< "${1//$2/$'\n'}" printf '%s\n' "${arr[@]}" } 三、示例用法: $ split...
  • 我将此字符串存储在变量中: IN="bla@some.com;john@home.com" 现在我想用拆分字符串; 分隔符,以便我有: ADDR1="bla@some.com" ADD
  • 1、从properties文件中读取变量 SERVER_NAME=`sed '/project.config/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'` ...2、字符串替换 ${变量/查找/替换值} 一个'/'表示替换第一个'//'表示替换所有,...
  • bash内置变量IFS作为内部单词分隔符,其默认值为<space><tab><newline>, 我想设置它仅为\n,于是: OLD_IFS=$IFS IFS='\n' # do some work here IFS=$OLD_IFS 但结果为:IFS把单独的字符当作了分隔...
  • Linux Bash Shell 字符串截取 代码 代码中 source ./publicFunctions.sh添加进自己的一些常用方法,如spilitLine = 指的是打印一行50个等号"=",用作分隔行。 #!/bin/bash source ./publicFunctions.sh str=...
  • 文章目录按分隔符拆分字符串字符串改为小写将字符串改为大写 按分隔符拆分字符串 警告: 需要 bash 4+ 这是cut、awk和其他工具的替代品。 示例函数: split() { # Usage: split "string" "delimiter" IFS=$'\n' ...
  • /bin/bash a="hello,world,nice,to,meet,you" #要将$a分割开,先存储旧的分隔符 OLD_IFS="$IFS" #设置分隔符 IFS="," #如下会自动分隔 arr=($a) #恢复原来的分隔符 ...
  • shell文件读取及字符串分隔

    万次阅读 2015-06-30 17:08:13
    step1. 准备待处理的数据文件data.txt: abc;def 123;456 qwe;rty step2. 脚本文件 test.csh: #! /bin/bash #备份IFS OLD_IFS="$IFS" #设置新的分隔符为; IFS=";" ... #将字符串$L
  • bash 分割字符串

    千次阅读 2014-05-04 15:15:04
    http://www.taoer.com/2005/07/28/linux-shell-bash-split-string/例如字符串是 “www.taoer.com”想要取得taoer分隔的方法为:echo “www.taoer.com” | cut -d “.” -f2输出的是taoer-d “.”为定义分割的字符,...
  • BASH - 字符串处理

    2014-02-06 17:36:03
    使用正则表达式拆分字符串BASH 3.0以上支持=~正则表达式) # 格式:name="value1","value2" # name、value1和value2是我们需要的字符串 # 在分隔符前后可以有空格(tab等无显示字符不允许...
  • 字符串的长度 子字符串 搜索和替换 改变大小写 字符串的长度 获取字符串长度的语法如下。 ${#varname} 下面是一个例子。 $ myPath=/home/cam/book/long.file.name $ echo ${#myPath} 29 大括号{}是必需的...
  • Linux bash的内置字符串处理工具 字符串切片 模式匹配处理 大小写转换 等等
  • 以前我写过一篇 Bash数组操作教程 ,今天使用Bash做文件处理的时候,发现有必要再写一篇将字符串拆分成数组的教程。但发现有人已经写了更好的教程在前面了,于是就偷懒转过来好了。 下面的内容转自Bash @ Linux.....
  • In a Bash script I would like to split a line into pieces and store them in an array. 在Bash脚本中,我想将一
  • bash内置字符串处理工具: 1、字符串切片:  ${var:offset:number} 取字符串的子串;  ${var: -length} 取字符串的最右侧的length个字符。注意:冒号右侧必须有一个空白字符。 演示: 2、基于模式取子串...
  • Ctrl键:\033 [:控制字符和颜色代码之间的分隔符; 所有的颜色代码都应该使用m结尾 颜色代码: 0:表示关闭颜色显示属性,恢复为黑白色; 1:加粗显示文本字符; 4:为文本字符添加下划线标识; 5:使文本字符闪烁...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,100
精华内容 14,040
关键字:

bash字符串分隔