「ls-l」コマンドの出力からファイル名とそのサイズのリストを取得するために、cutコマンドを使用しようとしました。
$ ls -l | cut -f 5,9 -d " "
区切り文字として「SINGLEWHITESPACE」に基づいた出力が得られます。「ls-l」出力に特定の行に連続したスペースが含まれている場合、コマンドの出力はそれらの行に対して適切ではありません。列区切り文字として空白が1つしかない行は、正しい出力を提供します。
次のコマンドを実行すると:
$ ls -l | awk '{ print $5"\t"$9 }'
awkは複数のスペースを無視し、「ls-l」出力から列を適切に抽出しています。一方、cutは各スペースを区切り文字として扱いますが、間違った列に値を入力します。
すべての行に正しい出力を提供します。
なぜこうなった ?カットコマンドでこれを解決するにはどうすればよいですか?