1.6 Linuxの基礎(f)はgrepの三銃士
グレップ:グローバル検索正規表現とラインを印刷
プリントと一致するように、ライン、テキスト検索ツール、ラインマッチングチェックによってターゲットテキスト行のためのユーザー指定の「モデル」に基づいて:の役割
モード:正規表現文字で基準をフィルタリングして、テキストの文字が書かれました
grepの[OPTIONS] PATTERN [FILE ...]
grepのルート/ etc / passwdファイル
grepの "$のUSER" / etc / passwdファイル
grepの '$ユーザ' / etc / passwdファイル
grepの `whoami` / etc / passwdファイル
grepコマンドのオプション:
--color =自動:テキストのカラー表示を一致
-v:なしパターンはラインにマッチしていない示して
-i:大文字と小文字を無視します
-n:行番号が一致を表示
統計に一致する行数:-c
-o:のみマッチした文字列を表示します
-q:サイレントモードでは、出力情報をしません
-A番号:の後に、#の行の後(看板を探してください)
-B#:前に、ライン#の前に
~]# nmap -v -sP 192.168.32.0/24 |grep -B1 up|grep "Nmap scan" |cut -d" " -f5
-C#:コンテキスト、各長手方向列#
-e:オプションの数との間の論理的な関係を達成しますか、
「犬」ファイル-e「猫」-eグレップ
-w:単語全体にマッチ
-E:使用ERE、拡張正規表現
-F:fgrepは相当では、正規表現をサポートしていません(高速見ます)
1.6.1正規表現
REGEXP:モード文字とテキスト書かれた文字の特別な種類の、いくつかの文字(メタ文字)
制御機能またはワイルドカードながら、文字リテラルの意味を表すものではありません
プログラムサポートします。grep、sedは、awkは、vimの、より少ない、nginxの、ニスなど
2つのカテゴリに分類:
基本的な正規表現:BRE
拡張正規表現:EREのgrep -E、egrepの
正規表現エンジン:
異なるアルゴリズムを使用して、チェック処理ソフトウェアモジュールの正規表現
PCRE(Perl互換正規表現)
メタキャラクタカテゴリ:キャラクター、アンカーの整合周波数と場所、グループ
男7正規表現
==基本==正規表現のメタ文字
1.6.1.1文字が一致します。
。任意の1文字に一致します
[]指定された範囲内の任意の1文字と一致
[^] 指定された範囲外の任意の単一文字一致
[:alnum:] 文字と数字
[:アルファ:] すなわちAZ、いずれの場合も英語の文字を表す AZ
[:下:]小文字
[:アッパー:]大文字
[:桁:] 進数
[:PUNCT:] 句読点
【:スペース:】 水平および垂直空白
[ブランク:]空白(スペースとタブ)
【:スペース:】垂直及び水平空白(比[ブランク:】広い範囲を含む)の
[:CNTRL:]印刷できない制御文字(バックスペース、削除、ベル...)
【:XDIGIT:] 16進数
[:グラフ:非空白文字が印字可能
[:印刷:]印字可能な文字
一致の数を1.6.1.2
文字が表示される直前の文字に指定した指定回数で使用する後
*:ゼロを含むマッチ文字の前に、任意の回数、
欲モード:可能な限り一致
*任意の長さの任意の文字
?その直前の文字0または1回一致します
少なくとも一度フロント+文字を一致させます
{N}は直前の文字をn回一致します
{M、N} m個の文字が一致し、少なくとも前方および最もn回で
{N}はn回までの文字一致を上記
{Nは、}少なくともn回前の文字にマッチします
1.6.1.2アンカーの位置:ポジショニングが表示されます
- ^左のほとんどの行に固定モードの始まりを
- $右端のパターンのために、行の終わりを停泊
- ^パターンは、全体のラインのためのパターンマッチングを$
- ^$ 空行
- ^ [[:スペース:]] * $空行
- <または\ bは単語の初期左のワードパターンのアンカー
- >または\ bのサフィックスアンカー、単語の正しいモード
- <PATTERN>は、単語全体にマッチします
1.6.1.3グループ:
()1つのまたは複数の文字処理のために、全体として、一緒に結ば
例えば:(ルート)+は、内部変数の正規表現エンジンに記録されるパケットパターンに一致するコンテンツを括弧、これらの変数の名前は:\ 1、\ 2 \ 3、...
\ 1一致した文字と一致する左ブラケットと右ブラケットの間に左第一のモードから示します
例:(文字列1 +(string2の)*)
\ 1:文字列1 +(string2の)*
\ 2:string2の
1.6.1.4を参照した後、
- 基準パケットマッチング文字に先行する括弧内のモードではなく、パターン自体
[root@centos7 ~]# cat 1.txt
He love his lover.
She like her liker.
He like his lover.
[root@centos7 ~]# cat 1.txt |egrep "(love)+.*\1"
He love his lover.
1.6.1.5または:|
- 例:| B:AまたはB
C |猫:Cや猫
(C | C)AT:猫や猫
演習:
図1に示すように、ラインサイズSの先頭に表示の/ proc / meminfoのファイル(必要条件:二つの方法)
[root@CentOS7 scripts]# cat /proc/meminfo |grep -E "^(s|S)"
SwapCached: 0 kB
SwapTotal: 3145724 kB
SwapFree: 3145724 kB
Shmem: 10640 kB
Slab: 119216 kB
SReclaimable: 59848 kB
SUnreclaim: 59368 kB
[root@CentOS7 scripts]# cat /proc/meminfo |grep "^[sS]"
SwapCached: 0 kB
SwapTotal: 3145724 kB
SwapFree: 3145724 kB
Shmem: 10640 kB
Slab: 119216 kB
SReclaimable: 59848 kB
SUnreclaim: 59368 kB
[root@CentOS7 scripts]# cat /proc/meminfo |grep -i "^s"
SwapCached: 0 kB
SwapTotal: 3145724 kB
SwapFree: 3145724 kB
Shmem: 10640 kB
Slab: 119232 kB
SReclaimable: 59848 kB
SUnreclaim: 59384 kB
2、ディスプレイ/ etc / passwdファイルではないに/ binに/ bashのライン終了
[root@CentOS7 scripts]# cat /etc/passwd |grep -v "/bin/bash$"
3、ユーザーのデフォルトのシェルプログラムのRPCを表示します
[root@CentOS7 scripts]# cat /etc/passwd |grep "rpc\>"|cut -d : -f7
/sbin/nologin
2または3桁で/ etc / passwdファイルを見つけるための4、
[root@CentOS7 scripts]# cat /etc/passwd|grep "\<[1-9][0-9]\{1,2\}\>"
図5は、少なくとも文字の空白行で始まるように、/etc/grub2.cfgファイルCentOS7を表示し、非空白文字が背後にあり
[root@CentOS7 scripts]# cat /etc/grub2.cfg |grep "^[[:space:]]\+[^[:space:]]\+"
[root@CentOS7 scripts]#cat /etc/grub2.cfg |grep "^[[:space:]]\{1,\}[^[:space:]]\{1,\}"
6、ラインをLISTEN空白文字の任意の数の末尾に結果が続く「のnetstat -tan」コマンドを見つけるために
[root@CentOS7 scripts]# netstat -tan|grep "LISTEN[[:space:]]*$"
7、CentOS7とUID上のすべてのシステムユーザーのユーザー名を表示します
[root@CentOS7 scripts]# cat /etc/passwd |grep "/sbin/nologin"|cut -d":" -f1,3
図8に示すように、同じ名前のユーザーバッシュ、testbash、ラインバッシャー、SH、NOLOGIN、検索(/ sbinに/ NOLOGINするそのシェル)/ etc / passwdファイル名とシェルを追加
[root@CentOS7 scripts]# cat /etc/passwd |grep "^\([[:alnum:]]\+\>\).*\1$"
9、及びDFのgrepの使用、ディスクの各パーティションの使用、及び降順を除去
[root@CentOS7 scripts]# df|grep "/dev/sd.*"|tr -s " " |cut -d" " -f1,5 |sort -n
/dev/sda1 16%
/dev/sda2 9%
/dev/sda3 1%
[root@CentOS7 scripts]# df|grep "/dev/sd.*"|tr -s " " |cut -d" " -f1,5|sort -t" " -k2 -nr
/dev/sda1 16%
/dev/sda2 9%
/dev/sda3 1%
[root@CentOS7 ~]# df |grep "/dev/sd"|egrep -o "[0-9]{1,3}%"
1.6.1.6 egrepの拡張正規表現
egrepを=のgrep -E
egrepの[OPTIONS] PATTERN [FILE ...]
拡張正規表現のメタ文字:
文字が一致します。
。任意の1文字
文字の[]指定された範囲
[^]は、文字の指定した範囲内
一致の数:
* :前の文字を何回でもマッチ
?:0または1
+:1回以上
{M}:m回マッチ
{M、N}:少なくともM、n回まで
アンカー位置:
^:行の先頭
$:行の終わり
<、\ B:最初の単語
>、\ B:接尾辞
パケット:()
引用した後:\ 1、\ 2、...
または:| B:AまたはB
C |猫:Cまたは猫
(C | C)で:猫或猫
1.6.2運動
1、3人のユーザのルート、魔術師、王のUIDとデフォルトのシェルを示し
[root@CentOS7 scripts]# cat /etc/passwd |egrep "^(root|mage|wang)\>"|cut -d: -f1,3,7
root:0:/bin/bash
mage:4035:/bin/bash
wang:4049:/bin/bash
図2に示すように、第1の小括弧の行に続く単語(下線)のためにファイルには/etc/rc.d/init.d/functionsラインを見つけます
[root@CentOS7 scripts]# cat /etc/rc.d/init.d/functions |egrep "^[[:alnum:]_]+\>\("
図3は、そのグループ名は/etc/rc.d/init.d/functionsを使用してegrepを取ら
[root@CentOS7 scripts]# echo /etc/init.d/functions/ |egrep -o "[^/][[:alnum:]_]+/?$"
[root@CentOS7 scripts]# echo /etc/init.d/functdfioj_123/ |egrep -o "[^/]+/?$"
functdfioj_123/
4、egrepのパスを使用して除去し、トップディレクトリ名
[root@CentOS7 scripts]# echo /etc/init.d/functdfioj_123/ |egrep -o "/.*/?$"
図5は、各ホストの統計最後のコマンドは、ログインのルートIPアドレスとしてログイン
[root@CentOS7 scripts]# last |egrep -o "\<([1-9]|[1-9][0-9]|1[1-9][0-9]|2[0-4][0-9]|25[0-5])\>\.([1-9]|[1-9][0-9]|1[1-9][0-9]|2[0-4][0-9]|25[0-5])\>\.([1-9]|[1-9][0-9]|1[1-9][0-9]|2[0-4][0-9]|25[0-5])\>\.([1-9]|[1-9][0-9]|1[1-9][0-9]|2[0-4][0-9]|25[0-5])\>" |sort|uniq -c
1 172.16.253.196
103 192.168.110.1
1 192.168.110.128
図6は、拡張正規表現を使用して表す0-9,10-99,100-199,200-249,250-255
0-9:[0-9]
10-99:[1-9][0-9]
100-199:1[0-9][0-9]
200-249:2[0-4][0-9]
250-255:25[0-5]
図7は、すべてのIPv4は、ifconfigコマンドの結果を示すアドレス
ifconfig |egrep -o "([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-5]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-5]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-5]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-5]|25[0-5])"
[root@centos6 ~]# hostname -I
192.168.24.6
8、この文字列:のCentOSのLinuxへようこそ
それぞれの文字と再ソートするために、多くの繰り返しが前面に排出されます
[root@CentOS7 scripts]# echo "welcome to magedu linux "|egrep -o "[[:alpha:]]"|sort |uniq -c|sort -nr
3 e
2 u
2 o
2 m
2 l
1 x
1 w
1 t
1 n
1 i
1 g
1 d
1 c
1 a
echo "welcome to magedu linux"|sed 's/[[:space:]]/\n/g'|sed -r 's/([[:alpha:]])/\1\n/g'|sed '/^$/d'|sort |uniq -c |sort -nr