2

私はこれを持っています。

$input = "echo     a       b                c   d"
echo -e "$input" | cut -d " " -f 2-

しかし、私はエコーと印刷を取り除く単純なカットが欲しいだけです

a b c d #(single space) only
4

4 に答える 4

5
echo -e "$input" | tr -s ' ' | cut -d " " -f2-

また、「エコー」を取り除きます。

于 2012-08-31T16:52:47.403 に答える
4

bashが提供するもの以外のツールは必要ありません。

[ghoti@pc ~]$ input="echo     a       b                c   d"
[ghoti@pc ~]$ output=${input//  / }
[ghoti@pc ~]$ echo $output
echo a b c d
[ghoti@pc ~]$ echo ${output#* }
a b c d
[ghoti@pc ~]$ 

利点:パイプの余分なオーバーヘッドを回避できます。

欠点:複雑なパターン拡張内で複雑なパターン拡張を実行できないため(つまり、機能しないためecho ${${input//  / }#* })、追加の変数を割り当てる必要があります。

于 2012-08-31T16:53:14.767 に答える
3

少し回り道ですが、興味深いです:

( set -- $input; shift; echo $@ )
于 2012-08-31T16:53:08.837 に答える
1

sed付き:

sed -e 's/[ ]*[^ ]*[ ]*\(.*\)/\1/' -e 's/[ ]*/ /g' -e 's/^ *//' input_file
于 2012-08-31T16:53:31.007 に答える