正規表現演習の選択
基本パーツ
-
/ proc / meminfoファイルで、サイズまたは小文字のsで始まるすべての行を検索します。少なくとも3つの方法があります。
grep -E '^(s|S)' /proc/meminfo //扩展模式 grep -i '^s' /proc/meminfo //忽略大小写 sed -r -n '/^(s|S)/p' /proc/meninfo //sed模式
-
現在のシステムのroot、centos、またはuser1ユーザーに関する情報を表示します
cat /etc/passwd |grep -E '^(root|centos|user1)\>'//左边开头且右边是同类型字符
-
/etc/rc.d/init.d/functionsファイルで、単語の後に括弧が続く行を見つけます。
grep -P '\b\w*\b\(\)' /etc/rc.d/init.d/functions grep -E '\b([a-zA-Z]|_|[0-9])*\b\(\)' /etc/rc.d/init.d/functions grep -Eo "[_[:alnum:]]+\(\)" //[:alnum:]字母和数字
-
echoコマンドを使用して絶対パスを出力し、grepを使用してそのベース名(basename)を取得します
echo /etc/rc.d/init.d/functions |grep -Po '\b/\w*$'|grep -Po '\w*' echo /etc/sysconifg/network-srcipts/ifcfg-ens33 |grep -Eo "\<[^/]+/?$" //没有以/开头且没有以/结尾的字符串
-
dirnameコマンドの結果と同様に、そのパス名を取り出します。
-
ifconfigコマンドの結果で1〜255の値を見つけます。
ifconfig | grep -P '\ b([0-9] | [1-9] [0-9] | 1 [0-9] [0-9] | 2 [0-4] [0-9] | 25 [0-5])\ b '
2. 添加用户bash,testbash,basher以及nologin(其shell为/sbin/nologin);然后找出/etc/passwd文件用 户名同shell名的行 ```c cat /etc/passwd |grep -E '^(\w*):.*\1$' cat /etc/passwd |grep -E "^(\<.*\>):.*\1$" //(???) \1 grep -E "^[^:]+\>" //逆向思考 grep -Eo "^([^:]+\>).*\1$"
- ifconfigでコマンドのIPアドレスを取得するには、3つの方法を使用します。
方法一: ifconfig|grep -oE "inet [0-9.]+ "|awk '{print $2}' //辅助awk 方法二: ifconfig|grep -oP '(?<=inet )(.*)(?=netmask)' //零宽断言 方法三: //三类ip地址第一个字段范围:A:1-127;B:128-191;C:192-223,合并起来就是1-223,第二第三字段是0-255,最后一个字段是1-254 ifconfig |grep -oP '\b([1-9]|[1-9][0-9]|1[0-9][0-9]|2[01][0-9]|22[0-3])\b\.(\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\.){2}\b([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\b' 方法四: ifconfig | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' //简单粗暴有瑕疵 方法五: ifconfig |grep -o '\b[0-9]\{1,3\}\b\.\b[0-9]\{1,3\}\b\.\b[0-9]\{1,3\}\b\.\b[0-9]\{1,3\}\b' //简单无脑粗暴
-
上級部
-
ディレクトリ内のすべての.phpおよび.htmlファイルで文字「main {}」のみを再帰的に検索します
grep -r "main{}" . --include *.{ php,html}
-
検索結果からすべてのREADMEファイルを除外する
grep -r "main{}" . --exclude "README"
-
検索結果からファイルリスト内のファイルを除外する
grep -r "main{}" . --exclude-from filelist
-
マルチレベルディレクトリ内のテキストの再帰検索
grep -r -n -E '^(#!/bin/bash)' . //. 指的是当前目录路径
-
複数のファイルを検索し、一致するテキストがどのファイルにあるかを見つける
grep -n "root" /etc/fstab /etc/shadow /etc/passwd
-
fstabの先頭で英語以外の行を検索し、行番号を表示します
第一种: cat /etc/fstab|grep -nv '^[a-zA-Z]' //反向选择 第二种: cat /etc/fstab |grep -n "^[^a-zA-Z]" //反向选择
-
fstabで、cの後に1、2 d、3の文字列が続く行を検索します。
cat /etc/fstab|grep -E 'cd{1,2}3'
-
空白行と#で始まる行をフィルタリングする
#cat /etc/fstab|grep -vE '^$|^#'
-
/etc/rc.d/rc.sysinitまたは/etc/grub.confファイルで、少なくとも1つの空白文字で始まり、その後に非空白文字がある行を見つけます。
cat /etc/grub2.cfg|grep -P '^(\s{1,})\S' cat /etc/grub2.cfg|grep -P '^\s+\S'
-
システムのすべてのシステムユーザーを一覧表示する
cat /etc/passwd |awk -F: '$3>=1 && $3 <=1000{print $1}'
-
フィルタリング機能ファイルでは、単語または単語の前に「_」で始まる行が表示され、前後2行が表示されます
grep -P -C 2 '^_?\b\w+\b' /etc/rc.d/init.d/functions grep -E2 "^[_[:alnum:]]+\\(\\)" /etc/rc.d/init.d/functions
上級部
-
/etc/rc.d/rc.sysinitの#で始まる行を表示し、その後に1つ以上の空白文字、その後に空白以外の文字を表示します
grep -P -n '^#\s+\S*' /etc/rc.d/rc.sysinit
-
/ proc / cpuinfoファイルでキーワードfl agsを検索し、前後の行を表示します
grep -C 1 'flags' /proc/cpuinfo
-
少なくとも1つのルートキーワードを含むファイルを検索する
//内容包含: grep -P -r '(root)+' . find . -type f -print0| xargs -0 grep -c banana |grep -v ":0$"
-
テキスト内のすべてのqqメールボックスを検索(詳細:すべてのメールボックスを検索)
grep -P '^[1-9]{1}[0-9]{5,9}@qq.com' ./mail.txt
-
/ etcディレクトリでrootキーワードを含むすべてのファイルを検索し、ファイルパスとファイル名を表示します
grep -l -r 'root' /etc | xargs ls -l
-
ログファイルのエラーを生成する行を監視し、エラーを含む行のみを出力します。
tailf -f /var/log/nginx/error.log |grep --line-buffer 'Error' //行缓冲:每更新一行就监控控一行
教室での練習
1. ipadd変数を定義します。この変数の内容はeth0ネットワークカードのIPであり、この変数がすべてのシェルで有効であることを要求します
ipadd=`ifconfig ens33 | grep 'inet.*netmask'|awk '{print $2}'
export ipadd
2.システム環境変数PATHの値を/ binに変更し、次にpasswdを実行して現在のユーザーのパスワードを変更します。成功しますか?
いいえ、passwdコマンドのファイルパスは/ usr / bin / passwdです。PATHパスが/ binに設定された後、passwdを直接実行すると、一致するパスが見つかりません。
3.現在のシステムの言語環境を中国語に変更します(すでに中国語の場合は英語に切り替えます)。これは永続的に有効になります
export LANG="zh_CN.UTF-8"
4.システム内で1k未満のファイルを見つけ、それらを/ var / tmp / find_dirにコピーし、バックグラウンドで実行する
mkdir -p /var/tmp/find_dir;find -size -1k -exec cp -a {
} /var/tmp/find_fir \; > /dev/null &
5.システムのグループアカウントファイルをカウントし、それらのgidをソートして、ファイル〜/ gid.txtに出力し、出力行をカウントします
sort -t: -k3 -n /etc/group |tee ~/gid.txt |wc -l
6. sedを使用して〜/ install.logファイルを直接変更し、すべてのx86_64をi386に変更して、バックアップファイルを生成します。
|sed -i.bak's/x86_64/i386/g' ~/install.log