Scripting 更改csh中foreach的分隔符

Scripting 更改csh中foreach的分隔符,scripting,csh,Scripting,Csh,我有一个字符串,如下所示: set str = "HELLO SO COMMUNITY| CAN YOU HELP ME" foreach word ($str) echo $word end 目前,这张打印的是HELLO,然后是SO,然后是COMMUNITY等等。 我想把印刷用的纤度计调成|。所以输出应该是HELLO SO社区,然后你能帮助我吗。有人知道怎么做吗 set str = "HELLO SO COMMUNITY| CAN YOU HELP ME" set delimite

我有一个字符串,如下所示:

set str = "HELLO SO COMMUNITY| CAN YOU HELP ME"
foreach word ($str)
    echo $word
end
目前,这张打印的是HELLO,然后是SO,然后是COMMUNITY等等。 我想把印刷用的纤度计调成|。所以输出应该是HELLO SO社区,然后你能帮助我吗。有人知道怎么做吗

set str = "HELLO SO COMMUNITY| CAN YOU HELP ME"

set delimiter = '|'
set special_char = '_' # A character you know doesn't appear in your strings

set words = `echo $str | sed "s/ /$special_char/g" | sed "s/$delimiter/ /g"`
# words now contains "HELLO_SO_COMMUNITY _CAN_YOU_HELP_ME"

foreach word ($words)
    echo $word | sed "s/$special_char/ /g"
end
special_char
替换为字符串中不出现的字符。对任何特殊角色都要小心。我会避免使用
*
$
\
,以及其他可能被cshell解释的令牌。cshell的规则#1是它总是以错误的方式解释它们…:P