Cut
cutは入力の各行から選択した部分を切り出して、標準出力に表示するコマンド。
例えば
abc,123,xyz defg,4,w hi,56789,stuv
のような簡単なCSVファイルinput.csvがあるとき、ここから2列目を抜き出したい場合
cut -d ',' -f 2 input.csv
-d で区切り文字となるデリミタを指定し、
-f で抜き出したい列数を指定する。
しかし、lsの結果からファイル名とサイズを抜き出そうとすると、うまくいかない。
la -alh の結果は見た目上整形されているため、サイズ部分やユーザ名などの長さによってデリミタとなるスペースの数が違うからだ。
どうしてもcutを使用して抜き出したい場合はsedコマンドを併用することで可能となる。
ls -alh | sed -e 's/\s\{1,\}/ /g' | cut -d ' ' -f5,9
sedコマンドで連続するスペースを一文字のスペースに変換して、その結果をcutに渡すことで抜き出せるようにする。
cutを使用せずにawkコマンドを使用するともっと簡単に実現できて、フィル名 サイズ のように順番も変えられる。
ls -alh | awk '{print $9 $5}'