【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

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

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメント

  1. 健太郎 より:

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

    1. リナックスアカデミー より:

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

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

コメントを残す

*

ゼロからエンジニアを目指す方へ
短期間でエンジニアになる方法

必要な勉強や技術の最新動向、本当に使えるIT資格、学習に役立つ国からの奨励金などの情報を無料でお届け

資料を見てみる