Linuxコマンド・bashの使い方実例

Linuxコマンド・bashの使い方の実例を紹介します。
管理人は某企業で、一応SEとして働かせていただいております(本業は組み込み系)。
まだまだ未熟者ですが、皆さんのお役に立てたら幸いです。

タグ:grepコマンド

ちょっとした小ワザ(ってほどでもないのですが・・)、
特定のディレクトリ、あるいはファイルの、特定の行のみ出力する方法を記載します。 
下記のsedコマンドで、指定したファイルの指定した行を出力できます。 

sed -n [行数]p [ファイル名]

※-nオプションは、条件に含まれない行は出力させないオプションです。
※カッコ[]は含めないでください。

ディレクトリに含まれるファイル全てを対象に出力する場合は、
以下のようにfindコマンドと組み合わせます。

find [ディレクトリ] -type f -exec sed -n [行数]p {} ¥;

特定の拡張子のファイルを対象にする場合(例では拡張子が.c)、
findコマンドに-name '*.c'などのオプションでフィルターをかけることもできます。

find [ディレクトリ] -type f -name '*.c' -exec sed -n [行数]p {} ¥;

このようにgrepやfindやsedを組み合わせて使い慣れることで、
作業効率を格段に上げることができます。
Linux環境を使う方には必須のテクニックでしょう。 
スポンサードリンク
スポンサードリンク

grepコマンドで、テキストエディタ等でよくするgrep指定をする方法です。

コマンド書式:
grep -nr --include=読み込むファイル名 "検索文字列" 検索するディレクトリ

例) 
grep -nr --include=*.c "return 1" ./MyProject

解説:
例では、"return 1"という文字列を、カレントディレクトリにあるMyProjectフォルダ以下にある、拡張子が.cのファイルの中から検索します。結果に、マッチしたファイル名と行だけではなく、行番号も出力します。

結果例:
./MyProject/grep_test/greptest.c:1:return 1;

-nオプションで検索文字列が含まれるファイルの行番号を表示します
-rオプションで指定したディレクトリを再帰的に検索します
--include=オプションで検索対象とするファイルパターンを指定します。正規表現が可能です。複数パターンを指定する場合は--include=を複数指定します。 

なお、結果のファイル名や行番号はコロン「:」で区切られるため、awkなどで整形することも容易です。 

↑このページのトップヘ