sed コマンド 置換・削除・アドレッシングまとめ

sedはとても便利なツールです。

よく使うコマンドやアドレシング・否定の指定方法など、ちょっとしたテクニックも知っておくと便利です。

とにかく早く問題解決したい人はこちら>>直接、データ解析相談

よく使うsedコマンド

置換や削除はよく使います。その他にも、特定の行だけの処理・パターンを除外した処理などできます。

hello.sh(サンプルとして使います)

#! /bin/bash

for i in `seq 1 ${1}`; do
    echo "${i} hello! 123"
done

置換

置換を行う際はsコマンドを使います。更に、複数実行する場合は-eオプションを使います。マッチしたパターン全て(または指定部位)に処理を適用したい場合は、gフラグ(または数字)を使います。

コマンドで確認

$ echo "hello world!" | sed 's/hello/HELLO/'  # 文字列を指定
HELLO world!

$ echo "hello world!" | sed 's/\W/-/g'        # 文字列クラス(\W)を指定(全体)
hello-world-

$ echo "hello world!" | sed 's/\W/-/2'        # パターンマッチの2番目だけを処理
hello world-

削除

行の削除を行う際はdコマンドを使います。アドレスやパターンと一緒に指定します。

コマンドで確認

$ sh hello.sh 3 | sed -e '1d' -e '$d'  # 先頭行&末尾行の削除
2 hello! 123

$ sh hello.sh 3 | sed '/^[13]/d'       # 先頭が「1 or 3」の行削除
2 hello! 123

特定の行だけに作用する

sedの処理は行単位ですが、アドレシングを指定して特定の行だけに作用させることができます。置換s削除dコマンドの前に、開始行番号,終了行番号を書くと対応した範囲にだけコマンドを適用することができます。尚、開始や終了は、それぞれ省略することができます。行番号の代わりに、パターン(/pattern/s/...)を指定するとパターンに合致した行だけに、コマンドを適用することができます。また、置換した行だけ表示させる場合は、パターンスペースを自動表示を抑制する-nオプションと表示に関するpフラグを組み合わせると良いです。

コマンドで確認

$ sh hello.sh 3 | sed '1,3s/hello/HELLO/'      # 1〜3行目
1 HELLO! 123
2 HELLO! 123
3 HELLO! 123

$ sh hello.sh 3 | sed '/^[13]/s/hello/HELLO/'  # 先頭が「1 or 3」の行
1 HELLO! 123
2 hello! 123
3 HELLO! 123

$ sh hello.sh 3 | sed -n '2s/hello/HELLO/p'    # 置換した行だけ表示
2 HELLO! 123

条件からの除外

パターンで表現するには、否定の方法も知っておくと簡単にできる場合があります。否定は、置換コマンドsや削除コマンドdの前に、!を指定します。例えば、アドレシングを用いた場合に範囲を指定するのは容易ですが、飛び飛びで指定する場合は面倒です。除外したいパターンが明確な場合に、役に立つかもしれません。

コマンドで確認

$ sh hello.sh 3 | sed -n '2!s/hello/HELLO/p'         # 2行目以外(否定)
1 HELLO! 123
3 HELLO! 123

$ sh hello.sh 5 | sed -n '/^[24]/!s/hello/HELLO/p'   # 先頭「2 or 4」以外(否定)
1 HELLO! 123
3 HELLO! 123
5 HELLO! 123
とにかく早く問題解決したい人はこちら>>直接、論文相談

関連記事

sed スペース 空白文字の整理・空白行の削除
SED 便利な使い方 ファイル読み込み・ファイル書き出し
sed コマンド 行指定の置換・削除(アドレッシング)
sed コマンド 削除(行番号とパターン)
sed コマンド 置換(全体と部分指定)
sed コマンド スクリプトファイルの実行 スクリプトの書き方
sed コマンド 単純な置換
正規表現 メタキャラクタ 検索・置換 前編
正規表現 メタキャラクタ 検索・置換 後編



カテゴリー

今週よく読まれている記事

  1. 学会・会議で英語が絶望的にできなくて困るケース | オンライン開催で「英語力のなさ」を痛感した場合の対処法

    学会・会議で英語ができなくてに困るケース学会やイベント・会議などが、オンラインで開催される…
  2. r tidyverse 使い方 | 列 filter 絞り込み select関数 – dplyrパッケージ

    tidyverseで1つのデータフレームの列の絞り込みは、dplyrパッケージのselect関数を…
  3. プログラミングで疲れた脳をリフレッシュ 〜 鬼滅の刃「感動」と「やる気アップ」でストレス発散!

    ストレス発散は鬼滅で。「50%OFF」で読む!脳のパフォーマンスを上げるには、適度な休憩と…
  4. AWS ディスク容量不足 新しいボリュームを追加する

    バイオインフォマティクスでは大きなファイルを扱うことがあるので、ディスク不足に陥ることがあります。…
  5. 「知っている」と「知らない」とでは、もしものとき、大違いになる – コロナうつ対策

    コロナうつなどという言葉を聞くようになりましたが、派遣切り、解雇、リストラは、これから本格化します…

人気記事

  1. IGV, 解析ツール

    IGV 使い方 インストール〜便利な使い方まで | リファレンス・マッピングデータ・アノテーションを読み込んで表示しよう
    IGV(Integrative Genomics View…
  2. R言語

    R subset関数 データフレームやmatrixからの条件指定による行・列の抽出
    R の subset関数は、データフレームやマトリックスか…
  3. Excel, 統計

    z-score 計算方法 エクセル(Excel) 編
    統計処理で、大きく変化しているなどの判断基準にも使われる値…

おすすめ記事

  1. awk, シェルスクリプト

    bash 部分文字列・置換・長さ・連結・分割の文字列処理
    bashのよく使う文字列処理、部分文字列・置換・連結・長さ…
  2. R言語, グラフ

    R 使い方 軸・ラベルの調整(向き・サイズ・色など) グラフの描き方
    Rによるplot(グラフ)の描画は、手軽で大変便利です。た…
  3. シェルスクリプト

    シェルスクリプト | ファイル存在チェック・空ファイルチェック
    bashでスクリプトを作成するときに、よく使うのがファイル…