【Linux】シェルスクリプトによる文字列処理:置換や削除をする方法

文字列の置換と削除
  • このエントリーをはてなブックマークに追加
  • Pocket

Linuxではテキストデータを良く使う。それらのテキストデータに対して置換や削除などの処理をしたいことがよくあるだろう。

このページではそういった処理をシェルスクリプトで効率的に実現する方法について紹介する。

シェルスクリプトによる置換や削除

Linuxに触れていると、テキストデータを取り扱うことが多くある。設定ファイルなどはほぼテキストデータでなりたっている。また標準出力されるものをテキストデータとして保存することも容易だ。テキストデータと向き合う時間はおそらくWindowsよりも長いはずだ。

そんなLinuxに触れていると、「この文字列をこの文字列に一括で置き換えたい」「この文字列をすべて削除したい」といったオーダーに出会う。

例えばスクリプトを使って文字列を置換し、様々な設定を自動化するということも可能だろう。このページではそういった「シェルスクリプトでの文字列処理」を取り上げる。

bash置換の書式について

  • ${変数%マッチパターン} 後方からの検索の一致で一番初めにマッチした部分を削除
  • ${変数%%マッチパターン} 後方からの検索の一致で一番後ろまでマッチした部分までを削除
  • ${変数#マッチパターン} 前方からの検索の一致で一番初めにマッチした部分を削除
  • ${変数##マッチパターン} 前方からの検索の一致で一番後ろまでマッチした部分までを削除
  • ${変数/文字列/処理後文字列} 最初にマッチしたもののみ文字列を置換
  • ${変数//文字列/処理後文字列} 全ての文字列を置換

sedの主な書式

文字列一括置換

$ sed -e 's/変更前の文字列/変更後の文字列/g' ./data.txt > ./data-new.txt

文字列の一括削除

$ sed -e 's/変更前の文字列//g' ./data.txt > ./data-new.txt

行の削除

パターンにマッチした行を削除

$ sed -e '/パターン/d' ./data.txt > ./data-new.txt

2~4行目を削除

$ sed -e ‘2,4d’ data.txt> ./data-new.txt

パイプラインをつかった受取

$ cat data.txt | sed -e ‘2,4d’ > ./data-new.txt

オプション -i で元テキストを直接編集保存する。

これはGNU固有のオプションとなっている。

$ sed -i -e 's/変更前の文字列/変更後の文字列/g' ./data.txt

実際にやってみよう

bashスクリプトで文字列処理をする場合、bash標準機能を使用するほか、「sed」コマンドを使用する方法もある。

bashを使う

bashの場合一応に変数内の文字列を編集する手段があるが、他のファイル内の文字列を編集するのならば「sed」コマンドの方が、直感的だろう。

vi replacement-ex1.sh

実行結果

$ ./replacement-ex1.sh

replacement

sedを使う

おそらくこちらの方がわかりやすいだろう。

ファイルの内容を一定のパターンを指定して非対話的に書き換えることができる。またファイルを取りこむための手続が少なくなるので、こちらのほうが重宝するだろう。

sedは単体のエディタコマンドである。スクリプトに記述するほか、そのままコマンドとして実行できる。

vi replacement-ex2.sh

実行結果

$ ./replacement-ex2.sh

replacement ex2

sedの主なオプション

  • -i GNU特有のオプション 標準出力しないで、直接元ファイルを書き換える。つまりリダイレクトしなくてもファイルを書き換えることが出来る
  • -e 変換処理のためのオプション
  • d 行指定もしくはパターン指定して行を削除する。
  • 番号 行を指定する。
  • s 文字列置換をおこなう。最後にgをつけた場合、全ての合致する文字列を置換する。
  • g 非対話的に全て置換する。

まとめ

このページではシェルスクリプトを用いて、置換や削除などの文字列処理を実施する方法についてまとめてきた。

全て覚える必要はないかもしれないが、手間の掛かる処理を一括で実行できる便利な方法なので、必要になったときに再度確認いただければと思う。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. 健太郎 より:

    またスクリプトを使って文字列置換を駆使し
    両方とも「使う」の表現
    またスクリプトを使って文字列置換により
    等が分かりやすい

    1. リカレントテクノロジー より:

      ご指摘いただきありがとうございます。
      一部文章におかしな部分がありましたので訂正いたしました。

      引き続き、ご愛読のほど、よろしくお願いいたします。

健太郎 へ返信する コメントをキャンセル

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する