cut を他のテキスト処理ツールと組み合わせる
このステップでは、cut
コマンドを他の Linux テキスト処理コマンドと組み合わせて、より複雑なデータ抽出および操作タスクを実行する方法を学びます。
CSV データファイルの作成
まず、操作対象となる CSV (Comma-Separated Values、カンマ区切り値) ファイルを作成しましょう。
cd ~/project
echo "Date,Product,Quantity,Price,Total" > data/sales.csv
echo "2023-01-15,Laptop,5,1200,6000" >> data/sales.csv
echo "2023-01-16,Mouse,20,25,500" >> data/sales.csv
echo "2023-01-17,Keyboard,15,50,750" >> data/sales.csv
echo "2023-01-18,Monitor,8,200,1600" >> data/sales.csv
echo "2023-01-19,Headphones,12,80,960" >> data/sales.csv
このファイルの内容を確認しましょう。
cat data/sales.csv
以下のように表示されるはずです。
Date,Product,Quantity,Price,Total
2023-01-15,Laptop,5,1200,6000
2023-01-16,Mouse,20,25,500
2023-01-17,Keyboard,15,50,750
2023-01-18,Monitor,8,200,1600
2023-01-19,Headphones,12,80,960
cut と grep の組み合わせ
grep
を使用して特定のパターンを含む行を検索し、その後 cut
を使用してそれらの行から特定のフィールドを抽出することができます。
grep "Laptop" data/sales.csv | cut -d',' -f3-5
このコマンドはまず "Laptop" を含むすべての行を検索し、その後 3 番目から 5 番目のフィールド (Quantity、Price、Total) を抽出します。以下のように表示されるはずです。
5,1200,6000
cut と sort の組み合わせ
sort
を使用して、特定のフィールドに基づいてデータを並べ替えることができます。
cut -d',' -f2,4 data/sales.csv | sort -t',' -k2nr
このコマンドは、Product (2 番目のフィールド) と Price (4 番目のフィールド) を抽出し、その後 Price に基づいて数値の降順で並べ替えます。-t','
オプションは sort
の区切り文字を指定し、-k2
は 2 番目のフィールドでの並べ替えを示し、n
は数値ソートを表し、r
は降順を表します。
以下のように表示されるはずです。
Product,Price
Laptop,1200
Monitor,200
Headphones,80
Keyboard,50
Mouse,25
cut と sed の組み合わせ
sed
コマンドは、基本的なテキスト変換を実行できるストリームエディタです。以下は cut
と sed
を組み合わせた例です。
cut -d',' -f1,2,5 data/sales.csv | sed 's/,/ - /g'
これは、Date、Product、Total フィールドを抽出し、その後すべてのカンマを " - " に置き換えます。以下のように表示されるはずです。
Date - Product - Total
2023-01-15 - Laptop - 6000
2023-01-16 - Mouse - 500
2023-01-17 - Keyboard - 750
2023-01-18 - Monitor - 1600
2023-01-19 - Headphones - 960
cut と awk の組み合わせ
awk
コマンドは強力なテキスト処理ツールです。以下は cut
と組み合わせる方法です。
cut -d',' -f2-4 data/sales.csv | awk -F',' 'NR > 1 {print $1 " costs $" $3 " per unit"}'
これは、2 番目から 4 番目のフィールド (Product、Quantity、Price) を抽出し、その後 awk
を使用してメッセージを整形します。NR > 1
条件はヘッダー行をスキップし、print 文は出力を整形します。
以下のように表示されるはずです。
Laptop costs $1200 per unit
Mouse costs $25 per unit
Keyboard costs $50 per unit
Monitor costs $200 per unit
Headphones costs $80 per unit
複数のファイルの処理
cut
を複数のファイルで使用することもできます。別のファイルを作成しましょう。
echo "Category,Product,Stock" > data/inventory.csv
echo "Electronics,Laptop,15" >> data/inventory.csv
echo "Accessories,Mouse,50" >> data/inventory.csv
echo "Accessories,Keyboard,30" >> data/inventory.csv
echo "Electronics,Monitor,20" >> data/inventory.csv
echo "Accessories,Headphones,25" >> data/inventory.csv
では、両方のファイルから Product フィールドを抽出しましょう。
cut -d',' -f2 data/sales.csv data/inventory.csv
以下のように表示されるはずです。
Product
Laptop
Mouse
Keyboard
Monitor
Headphones
Product
Laptop
Mouse
Keyboard
Monitor
Headphones
cut
コマンドはすべてのファイルを処理し、すべての結果を順次出力します。両方のヘッダー行が含まれていることに注意してください。
cut
を他のテキスト処理ツールと組み合わせることで、Linux で高度なデータ操作タスクを効率的に実行することができます。