はじめに
こんにちは、コマンド学習を始めたばかりのターナーです。今回は「sedで分割」をテーマに、URLをスラッシュ(/)ごとに改行して分割する方法を解説します。シンプルなコマンドですが、初学者がつまずきやすいポイントも多いので、実行前後の状態や失敗例も含めて丁寧に説明していきます。
今回使用するコマンド
このコマンドは、URLの「/」を改行に置き換えることで、文字列を分割する処理を行います。つまり「sedで分割」を体験できる基本例です。
実行前の状態(ファイル名:input.txt)
まずは、処理対象の内容を確認します。今回は以下のような1行のURLを想定します。
https://running-terminal-commands/sed-split-url
この状態では、URLが1行にまとまっているため、構造が少し見づらいです。
実行後の状態(ファイル名:output.txt)
コマンドを実行すると、以下のようにスラッシュごとに改行されます。
https:
running-terminal-commands
sed-split-url
このように、URLの構造が視覚的に分かりやすくなります。特にログ解析やパス構造の確認などで役立ちます。
実行画像

コマンドの仕組みを理解する
初心者の方がつまずきやすいポイントなので、分解して説明します。
- echo "文字列"→ 指定した文字列を出力します
- |(パイプ)→ 左の出力を右のコマンドに渡します
- sed 's/\//\n/g'→ 置換処理を行います
- s:置換コマンド
- /\//:スラッシュを指定(エスケープが必要)
- /\n/:改行に置換
- g:すべての一致を対象にする
ここでのポイントは「/」が区切り文字として使われているため、\でエスケープする必要がある点です。
よくある失敗例(3つ)
① スラッシュをエスケープしない
sed 's///\n/g'
→ エラーになります。「/」は区切り文字なので、そのまま書くと構文が壊れます。
② シングルクォートを忘れる
sed s/\//\n/g
→ シェルが解釈してしまい、意図通り動きません。必ず ' ' で囲みます。
③ 入力ファイル名を指定し忘れる
sed 's/\//\n/g' > output.txt
→ 何も出力されない、または入力待ち状態になります。これは「sedに処理対象のファイルが渡されていない」ことが原因です。そのため、標準入力からの入力待ちになってしまいます。
正しくは、対象ファイルを指定します。
sedで分割を使うメリット
以下のような場面で役立ちます。
- URLやパスの構造を確認したいとき
- ログファイルを見やすくしたいとき
- 特定の区切り文字で分解したいとき
特にシェルスクリプトを書く際には、テキスト加工の基本として非常に重要です。
まとめ
今回は、sedを使って文字列を改行で分割する方法を学びました。
s/置換前/置換後/g の基本を理解する
スラッシュのエスケープに注意する
コマンドが止まっているように見える原因の一つが「入力待ち」であると理解する
シンプルなコマンドですが、理解すると応用の幅が広がります。私も最初は「なぜバックスラッシュが必要なのか」でつまずきましたが、仕組みを理解すると納得できました。
これからも少しずつコマンドに慣れていきましょう!
