すでにスペースで区切られた文字列を切り捨てるには?

すでにスペースで区切られた文字列を切り捨てるには?

このような文字列があるとしましょう。

test="1/2/3 4/5/6 7/8/9/0"

スペースと「/」で区切られます。各文字列セグメントの2番目のフィールドを取得して、このような結果を返したいと思います。

2 5 8

カットを使ってこれを行うことはできますか?それとも別のものが必要ですか?

newstring=$(echo $test | cut -d "/" -f2)

返品のみ可能

2

私は何をすべきかわかりません。

答え1

そしてzsh

$ echo ${${${=test}#*/}%%/*}
2 5 8

それ以外の場合は、次のようにできます。

$ printf '%s\n' "$test" | sed 's|[^ /]*/\([^/]*\)[^ ]*|\1|g'
2 5 8

答え2

あなたができることの1つは、スペースを改行文字に置き換えてから、またはawkを使用することですcut。その後、改行を空白に置き換えます。echo最後の改行を得るには、すべてをもう一度望みます。

$ echo $(echo "$test" | tr ' ' '\n' | awk -F'/' '{print $2}' | tr '\n' ' ')
2 5 8

または

$ echo $(echo "$test" | tr ' ' '\n' | cut -d/ -f 2 | tr '\n' ' ')
2 5 8

以下も使用できますperl

$ echo "$test" | perl -lane 's#.*?/(.+?)/.*#$1# for @F; print "@F"' 
2 5 8

答え3

頼むならcut

cut -d/ -f2,4,6 --output-delimiter=' ' <<<"$test"

関連情報