考察と提案:
-
文法が豊富なので、問題をできるだけ解決する方法を考えてください。
-
そのような答えを適用できるシナリオについてもっと考えてください。
-
質問ポーズ終え考えるについて
-
ドキュメント「man grep」に慣れている
基本パーツ
1.大文字または小文字のsで始まる/ proc / meminfoファイルのすべての行を出力するには、複数の方法を使用します
ヒント:大文字と小文字を無視します;展開を記述するさまざまな方法
grep -i '^ s' / proc / meninfo
echo -e "sb \ nSb \ nsB \ nSB" | grep -i '^ s'
grep -E "^(s | S)" / etc / fstab
grep "^ \(s \ | S \)" / etc / fstab
2.現在のシステムのroot、centos、またはユーザーユーザーに関する情報を表示する
grep -E '^ root | ^ centos | ^ root' / etc / passwd
3.すべての関数名をファイル/etc/rc.d/init.d/functionsに出力します(単語の後に括弧が付いている行)
ヒント:単語の始まり、角括弧の終わり
grep -P "\ b \ w + \(\)" /etc/rc.d/init.d/functions
4.パス文字列/ ssa / sssb / sscの最後のファイル名sscを出力します
ヒント:スラッシュ/以外の文字は、少なくとも1回出現し(ファイル名は空ではありません)、スラッシュ/以外の文字で終わる必要があります
エコー/ sss / ssss / sss | grep -o -P "[^ /] + $"
バリエーション:最後のファイル名以外のパスを出力します
ヒント:スラッシュで終わる任意の文字
エコー/ sss / ssss / sss | grep -o -P "。* /"
5. ifconfigコマンドで0〜255の数値を見つけます。
ヒント:分類されたディスカッション/拡張されたレギュラー
ifconfig | grep -E "\ b([1-9] | [1-9] [0-9] | 1 [0-9 [0-9] | 2 [0-4] [0-9] | 25 [0 -5])\ b "
6.ファイルのユーザー名がシェル名と同じである行を見つけます
ヒント:ユーザー名は最初の単語であり、シェル名は最後の単語であり、真ん中は任意の文字として扱われます
grep -P '^ \ b(\ w +)\ b。* \ 1 $' / etc / fstab
7. / ??? / ???にIPアドレスを出力します。
ヒント:ホスト番号は1から254の間で、上記の0から255に従って変更できますが、より複雑であり、プライベートIPアドレスを出力するのはより面倒です。
grep -Po '(?<= inet)(。*)(?= net)' / ??? / ???
上級部
8.すべての.phpおよびhtmlファイルで文字main {}を再帰的に検索します
grep "main()"。-r --include *。{php、html}
9.複数のファイルディレクトリで/ sbin / nologinで終わる行を再帰的に検索します
grep -r -n '/ sbin / nologin $' / etc
10. fstabで英語の文字で始まらない行を検索し、行番号を表示します
ヒント:英語の文字から始めて、否定します
grep -E -v -n '^ [a-zA-Z]' / etc / fstab
或者‘^[^a-zA-Z]'
11.空白行と#で始まる行をフィルタリングします
grep -E -v '^ $ | ^#' / etc / fstab
12.少なくとも1つの空白文字の後に非空白文字が続くファイルの行を見つけます。
grep -P '^ \ s \ S +' /etc/grub2.cfg
13.すべてのシステムユーザーを一覧表示する
プロンプト:UID:1-999
grep -P '\ b [1-9] \ d {0,2} \ b' / etc / passwd
猫/ etc / passwd | awk -F: '$ 3> 1 && $ 3 <1000 {print $ 0}'
14.フィルターファイルでは、単語または_で始まる単語で始まる行が表示され、前後の2行が表示されます。
ヒント:_ ?;単語が必要です
grep -C2 -P '_?\ b \ w + \ b' /etc/rc.d/init.d/functions