ファイル内の特定文字で終わる文字列を抽出する方法|grep $(ダラー)の正規表現と活用例


この記事の監修:宮崎智広(Linux教育歴15年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, ディレクトリ・ファイル操作 > ファイル内の特定文字で終わる文字列を抽出する方法|grep $(ダラー)の正規表現と活用例
「grepで特定の文字で終わる行だけを抽出したい」
「$記号をgrepで使う方法がわからない」
Linuxの grep コマンドで「特定の文字で終わる行」を抽出するには、正規表現の $(ダラー)記号を使います。
$ は「行の末尾」を意味するアンカーで、ファイル名一覧の絞り込みやログの解析で役立ちます。

この記事では、grep $(ダラー)を使って行末で終わる文字列を抽出する方法を解説します。

【この記事でわかること】
・$記号で行の末尾で終わる文字列を抽出する方法
・^(行頭)と$(行末)を組み合わせた検索パターン
・ファイル拡張子での絞り込みや設定ファイルの解析例
・grepの正規表現で使う主要なアンカー一覧

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

grep $(ダラー)で行末で終わる文字列を抽出する

正規表現の $(ダラー)は「行の末尾」を表す特殊記号です。
grep "文字列$" とすることで、指定した文字列で終わる行だけを抽出できます。

1. 基本的な使い方

# "en" を含む行を全て抽出 $ grep -i "en" country_list.txt Argentina Armenia Benin Central African Republic Denmark Grenada Kenya Liechtenstein Montenegro Saint Vincent and the Grenadines Senegal Slovenia Sweden Turkmenistan Venezuela Yemen # "en" で終わる行のみを抽出 $ grep -i "en$" country_list.txt Sweden Yemen

$ なしの場合は途中に「en」が含まれる行もすべてヒットしますが、
en$ にすることで「en で終わる行」だけに絞られます。

2. 大文字・小文字を区別しない検索(-iオプション)

# 大文字でも "EN" で終わる行を抽出 $ grep -i "en$" country_list.txt Sweden Yemen

実務での活用例

1. 特定の拡張子で終わるファイル名を抽出する

# .logで終わるファイル名を一覧から抽出 $ ls /var/log/ | grep "\.log$" boot.log cron.log messages.log # .shで終わるスクリプトファイルを検索 $ find /etc -name "*.sh" | grep "\.sh$"

.(ドット)は正規表現で「任意の1文字」を意味するため、\. とエスケープして「実際のドット」として扱います。

2. 設定ファイルから特定の値で終わる行を確認する

# /etc/hosts から "localhost" で終わる行を確認 $ grep "localhost$" /etc/hosts 127.0.0.1 localhost ::1 localhost # 行末がセミコロンで終わる行を抽出(PHP等の設定確認) $ grep ";$" /etc/php.ini | head -5

3. ログから特定のエラーコードで終わる行を抽出する

# アクセスログから "404" で終わる行を抽出 $ grep " 404$" /var/log/httpd/access_log # "ERROR" で終わるログ行を抽出 $ grep "ERROR$" /var/log/app/application.log

^と$を組み合わせたパターン

パターン 意味 使用例
^文字列 行頭から始まる grep "^server" nginx.conf
文字列$ 行末で終わる grep "\.log$" filelist.txt
^文字列$ 行全体が完全一致 grep "^root$" /etc/passwd
^$ 空行 grep -c "^$" file.txt

本記事のまとめ

やりたいこと コマンド
"en"で終わる行を抽出 grep -i "en$" ファイル名
.logで終わるファイル名を抽出 grep "\.log$" ファイル名
行全体が完全一致 grep "^文字列$" ファイル名
空行を除外 grep -v "^$" ファイル名

grepの正規表現をマスターして、ログ解析と設定確認を効率化しませんか?

^と$のアンカーを覚えるだけで、grepでの検索精度が大きく向上します。正規表現の基礎はLinux運用の必須スキルです。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。


暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。