以下を実行するbashスクリプトを実行しています。
cut -d ' ' -f2 <<< "aaa bbb"
答えを得ました:
bbb
区切り文字で複数の空白がある場合(例:3つ):
cut -d ' ' -f2 <<< "aaa bbb"
結果:
bbb
これは Debian 8 で実行されます。
debian 10で実行されているのと同じスクリプトは別の出力を生成します。
区切り文字で複数の空白がある場合(例:3つ):
cut -d ' ' -f2 <<< "aaa bbb"
結果は空白だけ""です。
私はDebian 8からDebian 10と同じ動作をしたいと思います。どんなアイデアがありますか?
(わかりました。tr -sを使用して3つのスペースを削除できますが、動作が異なる理由を理解したいと思います。)
ありがとう、ジョス
ベストアンサー1
cut
私は最近の行動がそのような変化を受ける資格がないと思います。また、Debian 8.11 と GNU coreutils 8.23 を使用してcut
状況を再現することはできません。
cut
ただし、パラメータにダッシュを付けると、-f 2-
フィールド2から始まるすべてのフィールドが取得されます。私はこれがあなたが説明するものと密接に一致していると思います。
$ cut -d ' ' -f2- <<< "aaa bbb"
bbb
出力には、bbb
フィールド2(空)、3(空)、および4()の間のフィールド区切り文字である2つの先行スペースがあります。あなたの質問に先行スペースがありますが、これが意図的なものかどうかはわかりません。