How do I split a String in CSH?

后端 未结 3 1516
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-17 21:09

For example, I want to split \"one,two,three\" with comma as delimiter and use a loop to process the resulted three substring separately.

相关标签:
3条回答
  • 2021-01-17 21:28

    For example:

    set s = "one,two,three"
    set words = `echo $s:q | sed 's/,/ /g'`
    foreach word ($words:q)
        echo $word:q
    end
    

    But consider whether csh is the right tool for whatever job you're doing:

    http://www.bmsc.washington.edu/people/merritt/text/cshbad.txt

    0 讨论(0)
  • 2021-01-17 21:32
    set list = one,two,three
    foreach i ( $list:as/,/ / )
      echo $i
    end
    
    0 讨论(0)
  • 2021-01-17 21:46

    A simpler solution than the current one presented involves using the built-in substitution modifer -- there is no need or reason to wastefully use a loop or external command substitution in this instance:

    set list = one,two,three
    set split = ($list:as/,/ /)
    
    echo $split[2] # returns two
    

    () creates a list, the :s is the substitution modifier and :as repeats the subtitution as many times as needed.

    Furthermore, t/csh does not require quoting of bare strings, nor variables that do not require forced evaluation.

    0 讨论(0)
提交回复
热议问题