/tmp/myfile
first line text
wanted text
other text
コマンド
$ grep -n "wanted text" /tmp/myfile | awk -F ":" '{print $1}'
2
-n
grep に切り替えると、一致した行の先頭に行番号が追加されます (その後に :
が続きます) )、2 番目のコマンドはコロンを列区切りとして使用します (-F ":"
)、任意の行の最初の列を出力します。最終結果は 行番号 のリストです
grep
以外に 、 awk
などの他のユーティリティも使用できます または sed
ここにいくつかの例があります。文字列 is
を検索したいとしましょう GPL
という名前のファイルで .
サンプル ファイル
[email protected]:~$ cat -n GPL
1 The GNU General Public License is a free, copyleft license for
2 The licenses for most software and other practical works are designed
3 the GNU General Public License is intended to guarantee your freedom to
4 GNU General Public License for most of our software;
[email protected]:~$
<強い>1. grep
[email protected]:~$ grep is GPL
The GNU General Public License is a free, copyleft license for
the GNU General Public License is intended to guarantee your freedom to
[email protected]:~$
<強い>2.わかりました
[email protected]:~$ awk /is/ GPL
The GNU General Public License is a free, copyleft license for
the GNU General Public License is intended to guarantee your freedom to
[email protected]:~$
<強い>3.セド
[email protected]:~$ sed -n '/is/p' GPL
The GNU General Public License is a free, copyleft license for
the GNU General Public License is intended to guarantee your freedom to
[email protected]:~$
これが役に立てば幸いです
コマンドの grep ファミリ (egrep、fgrep を含む) は、これに対する通常の解決策です。
$ grep pattern filename
ソース コードを検索している場合は、ack の方が適している可能性があります。サブディレクトリを自動的に検索し、通常は検索しないファイル (オブジェクト、SCM ディレクトリなど) を回避します。
これを行う通常の方法は、grep
を使用することです。 、正規表現パターンを使用して行を照合します:
grep 'pattern' file
パターンに一致する各行が出力されます。固定文字列のみを検索したい場合は grep -F 'pattern' file
を使用してください . fgrep
grep -F
の短縮形です .
sed
も使用できます :
sed -n '/pattern/p' file
または awk
:
awk '/pattern/' file