Linux cut 指定した部分を切り抜く

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}'

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください