私はこれを持っています。
$input = "echo a b c d"
echo -e "$input" | cut -d " " -f 2-
しかし、私はエコーと印刷を取り除く単純なカットが欲しいだけです
a b c d #(single space) only
私はこれを持っています。
$input = "echo a b c d"
echo -e "$input" | cut -d " " -f 2-
しかし、私はエコーと印刷を取り除く単純なカットが欲しいだけです
a b c d #(single space) only
echo -e "$input" | tr -s ' ' | cut -d " " -f2-
また、「エコー」を取り除きます。
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// / }#* }
)、追加の変数を割り当てる必要があります。
少し回り道ですが、興味深いです:
( set -- $input; shift; echo $@ )
sed付き:
sed -e 's/[ ]*[^ ]*[ ]*\(.*\)/\1/' -e 's/[ ]*/ /g' -e 's/^ *//' input_file