我有一个包含许多单词的字符串,每个单词之间至少有一个空格。我如何把字符串分割成单独的单词,这样我就可以循环遍历它们?
字符串作为参数传递。例如:${2}== "cat cat file"。我怎么循环呢?
另外,如何检查字符串是否包含空格?
我有一个包含许多单词的字符串,每个单词之间至少有一个空格。我如何把字符串分割成单独的单词,这样我就可以循环遍历它们?
字符串作为参数传递。例如:${2}== "cat cat file"。我怎么循环呢?
另外,如何检查字符串是否包含空格?
当前回答
$ echo foo bar baz | sed 's/ /\n/g'
foo
bar
baz
其他回答
$ echo "This is a sentence." | tr -s " " "\012"
This
is
a
sentence.
要检查空格,使用grep:
$ echo "This is a sentence." | grep " " > /dev/null
$ echo $?
0
$ echo "Thisisasentence." | grep " " > /dev/null
$ echo $?
1
只需使用shell内置的“set”即可。例如,
set $text
在此之后,$text中的单个单词将以$1、$2、$3等形式存在。对于健壮性,通常是这样做的
set -- junk $text
shift
处理$text为空或以破折号开头的情况。例如:
text="This is a test"
set -- junk $text
shift
for word; do
echo "[$word]"
done
这个打印
[This]
[is]
[a]
[test]
$ echo foo bar baz | sed 's/ /\n/g'
foo
bar
baz
另一个例子(使用Perl):
$ echo foo bar baz | perl -nE 'say for split /\s/'
foo
bar
baz
你试过把字符串变量传递给for循环吗?例如,Bash将自动对空白进行分割。
sentence="This is a sentence."
for word in $sentence
do
echo $word
done
This
is
a
sentence.