如何在CSH中拆分字符串?

时间:2011-10-12 04:08:15

标签: csh

例如,我想用逗号分隔“一,二,三”作为分隔符,并使用循环分别处理结果三个子字符串。

3 个答案:

答案 0 :(得分:9)

比当前提供的更简单的解决方案涉及使用内置替换修改器 - 在这种情况下没有必要或理由浪费地使用循环或外部命令替换:

set list = one,two,three
set split = ($list:as/,/ /)

echo $split[2] # returns two

()创建一个列表,:s是替换修饰符,并且:as根据需要重复多次。

此外,t / csh不需要引用裸字符串,也不需要强制求值的变量。

答案 1 :(得分:5)

例如:

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

但请考虑csh是否适合您正在做的任何工作:

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

答案 2 :(得分:1)

set list = one,two,three
foreach i ( $list:as/,/ / )
  echo $i
end