初心者必見!sedコマンドでbashスクリプトをパワーアップする方法

Bashスクリプトを書いていると、テキストの処理が必要になることがよくありますよね。sedコマンドは、そんな場面で大いに役立つツールの一つです。このブログでは、初心者の方に向けて、sedコマンドを使用してbashスクリプトを強化するための基本的な使い方を中心に解説します。

sedコマンドとは?

sedは、"stream editor"の略で、LinuxやUnix系システムで使用されるテキストを編集するためのコマンドラインツールです。sedはファイルや標準入力からテキストを読み込み、指定したパターンに基づいてテキストを変換または抽出することができます。sedは、特に大規模なデータセットを処理したいときや、定型的なテキスト変換が必要な場面で強力な効果を発揮します。

sedの基本的な使い方

まずはsedコマンドの基本的な使い方を確認しましょう。sedは通常以下のように使用します。

sed '編集コマンド' ファイル名

たとえば、"example.txt"というファイルの内容が以下のようだったとします。

Hello, World!
Welcome to sed tutorial.

このファイルの中の"World"を"Sed"に変換したい場合、次のコマンドを実行します。

sed 's/World/Sed/' example.txt

このコマンドは、"s"を使った置換コマンドで、"World"を"Sed"に置き換えています。デフォルトでは、sedは結果を標準出力に表示します。

sedでの基本パターン置換

1. すべての一致を置換する

前述のコマンドは、最初に一致したパターンだけを置換しますが、ファイル内のすべての"World"を"Sed"に置換したいときは、gフラグを使用します。

sed 's/World/Sed/g' example.txt

2. 特定の行を編集する

特定の行だけを編集したいときには、行番号を指定することができます。たとえば、2行目だけを変換する場合は次のようにします。

sed '2s/Welcome/Hello there/' example.txt

3. 特定範囲の行を編集する

行番号を範囲で指定することもできます。たとえば、1行目から2行目の"World"を"Sed"に変換したい場合は、次のように記述します。

sed '1,2s/World/Sed/' example.txt

高度なsedの使い方

複数の編集コマンドを実行する

複数の処理を一度に行いたい場合、-eオプションを使って複数の編集コマンドを渡すことができます。

sed -e 's/World/Sed/' -e 's/tutorial/guide/' example.txt

もしくは、一つのスクリプトファイルに記述してそれを実行することもできます。

正規表現を使った置換

sedはPOSIX準拠の正規表現をサポートしており、より複雑なパターンに基づく編集が可能です。たとえば、数字をすべて*に変換する場合は次のようにします。

sed 's/[0-9]/*/g' example.txt

ファイルのインライン編集

ここまではすべての出力を標準出力に出していますが、sedは-iオプションを使うことでファイルを直接編集することも可能です。

sed -i 's/World/Sed/g' example.txt

このコマンドは"example.txt"ファイル内のすべての"World"を"Sed"に直接書き換えます。

スクリプトと組み合わせて使う

sedコマンドをスクリプトと組み合わせることで、より効率的なテキスト処理を行うことができます。例えば、以下のようなスクリプトでは、特定のファイル中の単語を一括で変換することができます。

#!/bin/bash

if [ $# -ne 3 ]; then
  echo "Usage: $0 old-word new-word file"
  exit 1
fi

old_word=$1
new_word=$2
file=$3

sed -i "s/$old_word/$new_word/g" "$file"

このスクリプトは、古い単語を新しい単語に変換したいときに便利です。コマンドライン引数として古い単語、新しい単語、ファイル名を指定するだけで、スクリプトが置換を自動的に行ってくれます。

まとめ

sedは非常に強力で、高速なテキスト処理ツールです。その基本的な使い方と、一歩進んだ利用方法を学ぶことで、bashスクリプトに大きな力を与えることができます。スクリプトの効率化やテキスト処理の自動化に役立つsedは、初心者から上級者まで、幅広く活用できるため、ぜひ挑戦してみてください。

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする
未分類

コメント

タイトルとURLをコピーしました