シェルスクリプトでスペースの前後に文字列を分割する方法は?


回答:


31

jasonwryanの提案に加えて、次を使用できますcut

echo $var | cut -d' ' -f1

上記cutechoスペース区切り文字(と出力-d ' ')と第1のフィールド(出力-f1


動作していません。私はすでにそれを使用しました。コマンドが見つからないという。
-surbhi

3
@surbhiコマンドが見つからないというのは何ですか?cut標準ユーティリティです。あなたのスクリプトはおそらくどこか他の場所にエラーがあります。より一般的には、「機能していない」とは決して言わないでください。実行したコード、実行内容を正確に伝え、エラーメッセージをコピーして貼り付けてください。
ジル 'SO-悪であるのをやめる'

この答えは最も簡潔で直接的な方法であるため、受け入れられるべきです。もちろん、与えられた例よりも複雑な場合には機能しません。
ダングエン

9

これを行うための適切な方法は、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[@]}'"

これは、コマンドが見つからないことを
示して

それは、bashを使用しているかどうかに依存します。別のシェルを使用している場合、動作しない場合があります。echo $SHELL表示する必要があります:/bin/bashまたは同様。
gogoud

zsh;(
TonyH

これは、中に作業を行うZSH zoom="one two three"; declare -a zoomie=( $( echo $zoom | cut -d' ' -f1- ) ); echo ${zoomie[2]};
TonyH
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.