【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でもご購読できます。

コメントを残す

*