反復/egrep 構文: grep [-cinvABC] 'word' ファイル名 -c : 要件を満たす行の数を出力します 'halt' を含む行とそれに続く 2 行を出力します。 [root@localhost ~]# grep -A2 'halt' /etc/passwd 停止:x:7:0:停止:/sbin:/sbin/停止 メール:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin 'halt' を含む行とその上の 2 行を出力します。 [root@localhost ~]# grep -B2 'halt' /etc/passwd 同期:x:5:0:sync:/sbin:/bin/sync シャットダウン:x:6:0:シャットダウン:/sbin:/sbin/シャットダウン 停止:x:7:0:停止:/sbin:/sbin/停止 'halt' を含む行とその上下の 2 行を出力します。 特定のキーワードを含む行をフィルタリングし、行番号を出力する [root@localhost ~]# grep -n 'root' /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 11:オペレータ:x:11:0:オペレータ:/root:/sbin/nologin 特定のキーワードを含まない行をフィルタリングし、行番号を出力する [root@localhost ~]# grep -nv 'nologin' /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 6:sync:x:5:0:sync:/sbin:/bin/sync 7:シャットダウン:x:6:0:シャットダウン:/sbin:/sbin/シャットダウン 8:halt:x:7:0:halt:/sbin:/sbin/halt 26:test:x:511:511::/home/test:/bin/bash 27:test1:x:512:511::/home/test1:/bin/bash 数字を含むすべての行を除外する [root@localhost ~]# grep '[0-9]' /etc/inittab # upstart は動作します。init(5)、init(8)、initctl(8) を参照してください。 # 0 - 停止 (initdefault をこれに設定しないでください) # 1 - シングルユーザーモード # 2 - マルチユーザー、NFSなし(ネットワークがない場合は3と同じ) # 3 - フルマルチユーザーモード # 4 - 未使用 # 5 - X11 # 6 - 再起動 (initdefault をこれに設定しないでください) id:3:initdefault: 数字を含まない行をすべて除外する [root@localhost ~]# grep -v '[0-9]' /etc/inittab # inittab はデフォルトのランレベルでのみ upstart によって使用されます。 # # ここで他の構成を追加してもシステムには影響しません。 # # システムの初期化は/etc/init/rcS.confによって開始されます # # 個々のランレベルは /etc/init/rc.conf によって開始されます # # Ctrl-Alt-Delete は /etc/init/control-alt-delete.conf によって処理されます # # 端末のgettyは/etc/init/tty.confと/etc/init/serial.confによって処理されます。 # /etc/sysconfig/init の設定に従います。 # # Upstartイベントハンドラの書き方や、 # # デフォルトのランレベル。使用されるランレベルは次のとおりです。 # '#'で始まる行をすべて削除します [root@localhost ~]# grep -v '^#' /etc/inittab id:3:initdefault: 空白行と「#」で始まる行をすべて削除します [root@localhost ~]# grep -v '^#' /etc/crontab |grep -v '^$' シェル=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=ルート ホーム=/ 正規表現では、「^」は行の始まりを示し、「$」は行の終わりを示し、空白行は「^$」で表すことができます。英語の文字で始まっていない行を印刷するにはどうすればよいでしょうか。 [root@localhost ~]# vim test.txt [root@localhost ~]# cat test.txt 123 アブ 456 翻訳: #ラックス 全部 まず、実験のために test.txt に数行の文字列を書き込みます。 [root@localhost ~]# grep '^[^a-zA-Z]' test.txt 123 456 #ラックス [root@localhost ~]# grep '[^a-zA-Z]' test.txt 123 456 翻訳: #ラックス 数字の場合は、[0-9] の形式を使用します。もちろん、1 または 5 のみを含む [15] の形式を使用することもできます。この場合、15 とはみなされないことに注意してください。数字と大文字と小文字を除外したい場合は、[0-9a-zA-Z]と記述する必要があります。また、[ ] には [ ] 内の文字以外の文字を表す [^ 文字] という別の形式もあります。 任意の文字と繰り返し文字をフィルタリングする [root@localhost ~]# grep 'r..o' /etc/passwd オペレータ:x:11:0:オペレータ:/root:/sbin/nologin ゴーファー:x:13:30:ゴーファー:/var/ゴーファー:/sbin/nologin vcsa:x:69:69:仮想コンソール メモリ所有者:/dev:/sbin/nologin . は任意の文字を表します。上記の例では、r と o の間にある 2 つの文字を含む行が除外されます。* は、先行する文字の 0 個以上を表します。 [root@localhost ~]# grep 'ooo*' /etc/passwd ルート:x:0:0:root:/root:/bin/bash lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin メール:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin オペレータ:x:11:0:オペレータ:/root:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin 「ooo*」は、oo、ooo、oooo ... または「o」の増加を意味します。では、「.*」の組み合わせが何を意味するか考えてみましょう。 [root@localhost ~]# grep '.*' /etc/passwd |wc -l 27 [root@localhost ~]# wc -l /etc/passwd 27 /etc/passwd 「.*」は、空白行を含む 0 個以上の任意の文字を意味します。 フィルタリングする文字の出現回数を指定します [root@localhost ~]# grep 'o\{2\}' /etc/passwd ルート:x:0:0:root:/root:/bin/bash lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin メール:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin オペレータ:x:11:0:オペレータ:/root:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin エスケープ文字\なしで-Eを使用することもできます。 grep -E 'o{2}' /etc/passwd ここでは { } が使用され、内部の数字は前の文字が繰り返される回数を示します。上記の例では、2 つの o、つまり「oo」を含む行を意味します。 { } の両側にエスケープ文字 '\' が必要であることに注意してください。また、{ } を使用して範囲を表すこともできます。具体的な形式は '{n1,n2}' です。ここで、n1<n2 は前の文字を n1 回から n2 回繰り返すことを意味します。n2 は空にすることもできます。その場合は n1 回以上であることを意味します。 上で述べた grep は、よく使われるツールである egrep でもあります。簡単に言うと、後者は前者の拡張版です。egrep を使用すると、grep では実行できないタスクを実行できます。もちろん、egrep は grep で実行できるタスクも実行できます。面倒だと感じる場合は、egrep について学習してください。grep の機能は日常業務には十分です。以下は、grep では使用されない egrep の使用法の一部です。テストの便宜上、test.txt を次の内容に編集します。 rot:x:0:0:/rot:/bin/bash オペレータ:x:11:0:オペレータ:/root:/sbin/nologin オペレータ:x:11:0:オペレータ:/root:/sbin/nologin ルート:x:0:0:/ルート:/bin/bash 111111111111111111111111111111 ああああああああああああああ 1つ以上の先行文字をフィルタリングする [root@localhost ~]# egrep 'o+' test.txt rot:x:0:0:/rot:/bin/bash オペレータ:x:11:0:オペレータ:/root:/sbin/nologin オペレータ:x:11:0:オペレータ:/root:/sbin/nologin ルート:x:0:0:/ルート:/bin/bash [root@localhost ~]# egrep 'oo+' test.txt オペレータ:x:11:0:オペレータ:/root:/sbin/nologin オペレータ:x:11:0:オペレータ:/root:/sbin/nologin ルート:x:0:0:/ルート:/bin/bash [root@localhost ~]# egrep 'ooo+' test.txt オペレータ:x:11:0:オペレータ:/root:/sbin/nologin ルート:x:0:0:/ルート:/bin/bash 直前の文字の0回または1回の出現をフィルターします [root@localhost ~]# egrep 'o?' test.txt rot:x:0:0:/rot:/bin/bash オペレータ:x:11:0:オペレータ:/root:/sbin/nologin オペレータ:x:11:0:オペレータ:/root:/sbin/nologin ルート:x:0:0:/ルート:/bin/bash 111111111111111111111111111111 ああああああああああああああ [root@localhost ~]# egrep 'ooo?' test.txt オペレータ:x:11:0:オペレータ:/root:/sbin/nologin オペレータ:x:11:0:オペレータ:/root:/sbin/nologin ルート:x:0:0:/ルート:/bin/bash [root@localhost ~]# egrep 'oooo?' test.txt オペレータ:x:11:0:オペレータ:/root:/sbin/nologin ルート:x:0:0:/ルート:/bin/bash フィルター文字列 1 または文字列 2 [root@localhost ~]# egrep 'aaa|111|ooo' test.txt オペレータ:x:11:0:オペレータ:/root:/sbin/nologin ルート:x:0:0:/ルート:/bin/bash 111111111111111111111111111111 ああああああああああああああ egrep における ( ) の応用 [root@localhost ~]# egrep 'r(oo)|(at)o' test.txt オペレータ:x:11:0:オペレータ:/root:/sbin/nologin オペレータ:x:11:0:オペレータ:/root:/sbin/nologin ルート:x:0:0:/ルート:/bin/bash 全体を表すには ( ) を使用します。たとえば、(oo)+ は 1 つの「oo」または複数の「oo」を意味します。 [root@localhost ~]# egrep '(oo)+' test.txt オペレータ:x:11:0:オペレータ:/root:/sbin/nologin オペレータ:x:11:0:オペレータ:/root:/sbin/nologin ルート:x:0:0:/ルート:/bin/bash 以上が今回紹介したLinuxのgrepコマンドとegrepコマンドの関連知識の全てです。123WORDPRESS.COMをご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
<<: Vue の foreach 配列と js の traversal 配列の書き方の説明
>>: Mysql データベースの日付と日時型でデフォルト値 0000-00-00 を設定するときに発生するエラー問題の詳細な説明
forループを使用してZabbixイメージをコンテナにインポートします。 n を `ls *.tar...
ウェブサイト機能を開発する場合、セッション キャッシュを時間内にクリアできません。一連の探索が始まり...
Vue コンポーネントは接続されているため、コンポーネント間で値を渡す必要があるのは避けられません...
環境: 10.12 の新機能Python 3.6 MySQL 5.7.25 の場合ジャンゴ 2.2....
背景前景要素から特定の色を継承する影の効果を作成する方法を知りたいと思ったことはありませんか?方法に...
この記事では、参考までにMySQL 5.7.13 winx64のインストールと設定方法のグラフィック...
この記事は主に、みんなで共有できるVue3ベースのフルスクリーンドラッグアップロードコンポーネントを...
Bツリーインデックス異なるストレージ エンジンでは、異なるストレージ構造を使用する場合もあります。た...
この記事では、MySQL 5.7.18アーカイブ圧縮版をインストールする具体的な方法を参考までに紹介...
この記事では、ホイール抽選を簡単に実装するためのVueの具体的なコードを参考までに共有します。具体的...
使用シナリオ: Alibaba Cloud を使用しており、データディスクを別途購入しました (大容...
1. ユーザーを作成して承認するMySQL 8.0 では、ユーザーの作成と認証が以前とは異なります...
FIFO通信(先入れ先出し)関連のないプロセス間の通信を可能にする FIFO 名前付きパイプ。パイプ...
Linuxで環境変数を削除するには?unsetコマンドを使用してすぐに削除します1. Linuxクラ...
https ベースポート 443。これはキーと呼ばれるものに使用されます。これらのことを理解せずにで...