コマンドラインツールを使用したテキスト編集方法


コマンドラインでのテキスト編集:sed、awk、trの活用

コマンドラインでのテキスト編集は、大量のデータ処理や自動化スクリプトの作成において非常に有用です。ここでは、主要なツールであるsed、awk、trの使用方法を解説します。

1. sed (Stream Editor)

sedは、テキストの置換、削除、挿入などの編集操作を行うためのストリームエディタです。

基本的な置換

# 'old'を'new'に置換(最初の出現のみ)
sed 's/old/new/' file.txt

# 全ての出現を置換
sed 's/old/new/g' file.txt

# 3行目のみを置換
sed '3s/old/new/' file.txt

# 元のファイルを直接編集(GNU sed)
sed -i 's/old/new/g' file.txt

行の削除

# 空行を削除
sed '/^$/d' file.txt

# 特定のパターンを含む行を削除
sed '/pattern/d' file.txt

行の挿入

Vimのインサートモードに移るコマンド1のように、iが行前に挿入で、aが行後に追加です2。但し、小文字です。

# 2行目の後に新しい行を追加。バックスラッシュで改行
sed '2a\New line' file.txt

2. awk

awkは、テキスト処理や報告書生成に特化したプログラミング言語です。

フィールドの抽出

# 2番目と3番目のフィールドを表示
awk '{print $2, $3}' file.txt

# カンマ区切りのCSVファイル(Comma-Separated Values)を処理
awk -F',' '{print $1, $3}' file.csv

条件付き処理

# 3列目が100より大きい行を表示
awk '$3 > 100' file.txt

# 特定のパターンを含む行を処理
awk '/pattern/ {print $0}' file.txt

計算

# 数値の合計を計算
awk '{sum += $1} END {print sum}' file.txt

3. tr (Translate)

trは文字の置換や削除を行うシンプルなツールです。

文字の置換

# 小文字を大文字に変換
echo "hello" | tr 'a-z' 'A-Z'

# スペースをタブに変換
cat file.txt | tr ' ' '\t'

文字の削除

# 数字を削除
echo "abc123" | tr -d '0-9'

# 改行を削除
cat file.txt | tr -d '\n'

文字の圧縮

# 連続する重複文字を1つに圧縮
echo "hello    world" | tr -s ' '

実践的な使用例

  1. ログファイルから特定のエラーを抽出し、回数をカウント
grep "Error" log.txt | awk '{print $4}' | sort | uniq -c
  1. CSVファイルの特定列を抽出し、新しいファイルに保存
awk -F',' '{print $2 "," $4}' input.csv > output.csv
  1. テキストファイル内の特定の単語を置換し、バックアップを作成
sed -i.bak 's/oldword/newword/g' file.txt

これらのツールを組み合わせることで、複雑なテキスト処理タスクを効率的に実行できます。各ツールの詳細なオプションや機能については、manコマンド(例:man sed)で確認することをお勧めします。

  1. vim コマンド集 ↩︎
  2. sed aコマンド、 iコマンドの動作(指定文字列の挿入、追加) 【Linuxコマンド】 ↩︎