如何在Shell脚本中的空格前后分割字符串?


Answers:


31

除了jasonwryan的建议,您还可以使用cut

echo $var | cut -d' ' -f1

上面的cuts echo用空格定界符(-d ' ')输出,并输出第一个字段(-f1


它不起作用。我已经用过了。它说找不到命令。
surbhi

3
@surbhi找不到命令说什么?cut是标准实用程序。您的脚本可能在其他地方有错误。更笼统地说,永远不要说“它不起作用”。始终准确说出您运行的代码,发生的情况以及复制粘贴错误消息。
吉尔斯(Gilles)'所以

这个答案应该被接受,因为这是最简洁直接的方法。当然,在比给定示例更复杂的情况下,它不起作用。
Dan Nguyen'1

10

一种巧妙的方法是使用bash数组在空格上分割字符串。您只需使用方括号即可声明数组:

var="129 148     181"
vars=( $var )
echo "First  word of var: '${vars[0]}'"
echo "Second word of var: '${vars[1]}'"
echo "Third  word of var: '${vars[2]}'"
echo "Number of words in var: '${#vars[@]}'"

这表示找不到命令
surbhi 2015年

这取决于您使用bash。如果您使用其他外壳,则可能无法正常工作。echo $SHELL应显示:/bin/bash或类似。
gogoud 2015年

不适用于zsh;(
TonyH

这确实适用于ZSH zoom="one two three"; declare -a zoomie=( $( echo $zoom | cut -d' ' -f1- ) ); echo ${zoomie[2]};
TonyH,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.