zoukankan      html  css  js  c++  java
  • Shell中字符串分割的三种方法

    问题:对于’1,2,3,4,5’这样的字符串输出采用,分隔开的1 2 3 4 5

    特征:在字符串中没有空格

    解决方法1:

    [plain] view plaincopy
     
    1. #!/bin/bash  
    2. var=’1,2,3,4,5’  
    3. var=${var//,/ }    #这里是将var中的,替换为空格  
    4. for element in $var   
    5. do  
    6.     echo $element  
    7. done  



    若原来字符串中有空格如:’mark:x:0:0:this is a test user:/var/mark:nologin’这样的字符串,要将:分隔的字符串输出,上面的方法会将this is a test user分别输出,这个是不对的。

    对于这种情况解决方法2:

    [plain] view plaincopy
     
    1. #!/bin/bash  
    2. user=’mark:x:0:0:this is a test user:/var/mark:nologin’  
    3. for((i=1;i<=7;i++))  
    4. do  
    5.         echo $user|cut -d ":" -f$i  
    6. done  



    上面这种方法是确定字符串分隔后的长度的,要是写的更通用一点,向下面这样

    解决方法3:

    [plain] view plaincopy
     
    1. #!/bin/bash  
    2. user=’mark:x:0:0:this is a test user:/var/mark:nologin’  
    3. i=1  
    4. while((1==1))  
    5. do  
    6.         split=`echo $user|cut -d ":" -f$i`  
    7.         if [ "$split" != "" ]  
    8.         then  
    9.                 ((i++))  
    10.                 echo $split  
    11.         else  
    12.                 break  
    13.         fi  
    14. done  

    这种方法不需要知道分隔后的字符串的个数,具有更好的通用性

  • 相关阅读:
    GCC内置函数
    父类子类的拷贝构造与赋值
    外传三 动态内存申请的结果
    外传二 函数的异常规格说明
    外传一 异常处理深度解析
    第69课 技巧,自定义内存管理
    第68课 拾遗,令人迷惑的写法
    第67课 经典问题解析五
    第66课 C++中的类型识别
    第65课 C++中的异常处理(下)
  • 原文地址:https://www.cnblogs.com/zhengrunjian/p/4664768.html
Copyright © 2011-2022 走看看