正则介绍_grep上 grep中 grep下
在計算機科學中,對“正則表達式" 的定義是:它使用單個字符串來描述或匹配一系列符合某個句法規則的字符串。在很多文本編輯器或其他工具里,正則表達式通常用來檢索和替換那些符合某個模式的文本內容。許多程序設計語言也都支持利用正則表達式進行字符串操作。對于系統管理員來講,正則表達式貫穿在我們的日常運維工作中,無論是查找某個文檔,還是查詢某個日志文件并分析其容,都會用到正則表達式。
其實正則表達式只是一種思想、一種表示方法。只要我們使用的工具支持這種表示方法,那么這個工具就可以處理正則表達式的字符串。常用的工具有grep、sed、awk等,其中grep、sed和都是針對文本的行進行操作的。
正則介紹_grep上
該命令的格式為:grep [-cinvABC]‘word’filename
常用的選項如下:
-c:表示打印符合要求的行數。
-i:表示不區分大小寫。
-n:表示輸出符合要求的行及其行號。
-v:表示打印不符合要求的行。
-r:遍歷所有子目錄。
-A:后面跟一個數字(有無空格都可以)。過濾出符合要求的行以及下面n行
-B:后面跟一個數字。過濾出符合要求的行以及上面n行
-C:后面跟一個數字。過濾出符合要求的行以及上面n行。
grep中
方括號[ ]:匹配方括號里任意一個字符
^x:匹配以x開頭的字符
[^xyz]:非,匹配除方括號里xyz之外的任意字符串
^[^xyz]:匹配以除方括號里xyz之外的任意字符開頭的字符
點 .:匹配任意一字符
*:匹配星號左邊的字符重復0到n次的字符串。
.*:表示零個或多個任意字符,空行也包含再內。
會把passwd文件里面的所有行都匹配到。
grep下
花括號 x\{ n\}:字符x重復n次。
x\{ n,m\}:字符x重復n-m次
egrep:是grep的擴展版本,可以完成grep不能完成的工作,可以不使用字符 \
grep –E 跟egrep使用效果一樣
+:匹配加號左邊的字符重復1到n次的字符串。
?:問號前面的字符重復的次數是0或者1。
|:或者
grep ‘[0-9]’ passwd #把passwd文件中含有數字的行過濾打印出來
grep ‘^#’ shadow #把shadow文件中以“#”號開頭的行過濾打印出來
grep –v ‘^#’ shadow #把shadow文件中不以“#”開頭的行過濾打印出來
grep ‘^[^0-9]’ shadow #把shadow文件中以非數字開頭的行過濾打印出來
grep‘r.o'passwd#把passwd文件中r在前o在尾中間任意字符的字符串過濾打印出來
grep ‘o*o’passwd #把passwd文件中o重復n次且以o結尾的字符串過濾打印出來
grep ‘.*’ passwd #把passwd文件中任意字符創過濾打印出來
grep ‘o\{2\}’ passwd #把passwd文件中含有兩個o的字符串過濾打印出來
egrep ‘o{2}’ passwd====grep ‘o\{2\}’passwd====grep –E ‘o{2}’ passwd
grep ‘o+o’ passwd #把passwd文件中o開頭o結尾的字符串過濾打印出來
grep‘o?t’passwd #把passwd文件中有或者沒有o開頭以t結尾的字符過濾打印出來
egrep‘root|nologin’passwd #把passwd文件中匹配root或者nologin的字符
============================================================================================================================================================================================================
grep命令:
文件過濾分割與合并
grep(global search regular expression(RE) and print out the line,全面搜索正則表達式并把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。
選項
-a 不要忽略二進制數據。
-A<顯示列數> 除了顯示符合范本樣式的那一行之外,并顯示該行之后的內容。
-b 在顯示符合范本樣式的那一行之外,并顯示該行之前的內容。
-c 計算符合范本樣式的列數。
-C<顯示列數>或-<顯示列數> 除了顯示符合范本樣式的那一列之外,并顯示該列之前后的內容。
-d<進行動作> 當指定要查找的是目錄而非文件時,必須使用這項參數,否則grep命令將回報信息并停止動作。
-e<范本樣式> 指定字符串作為查找文件內容的范本樣式。
-E 將范本樣式為延伸的普通表示法來使用,意味著使用能使用擴展正則表達式。
-f<范本文件> 指定范本文件,其內容有一個或多個范本樣式,讓grep查找符合范本條件的文件內容,格式為每一列的范本樣式。
-F 將范本樣式視為固定字符串的列表。
-G 將范本樣式視為普通的表示法來使用。
-h 在顯示符合范本樣式的那一列之前,不標示該列所屬的文件名稱。
-H 在顯示符合范本樣式的那一列之前,標示該列的文件名稱。
-i 忽略字符大小寫的差別。
-l 列出文件內容符合指定的范本樣式的文件名稱。
-L 列出文件內容不符合指定的范本樣式的文件名稱。
-n 在顯示符合范本樣式的那一列之前,標示出該列的編號。
-q 不顯示任何信息。
-R/-r 此參數的效果和指定“-d recurse”參數相同。
-s 不顯示錯誤信息。
-v 反轉查找。
-w 只顯示全字符合的列。
-x 只顯示全列符合的列。
-y 此參數效果跟“-i”相同。
-o 只輸出文件中匹配到的部分。
grep命令常見用法
在文件中搜索一個單詞,命令會返回一個包含“match_pattern”的文本行:
grep match_pattern file_name
grep "match_pattern" file_name
在多個文件中查找:
grep "match_pattern" file_1 file_2 file_3 ...
輸出除之外的所有行 -v 選項:
grep -v "match_pattern" file_name
標記匹配顏色 --color=auto 選項:
grep "match_pattern" file_name --color=auto
使用正則表達式 -E 選項:
grep -E "[1-9]+"
或
egrep "[1-9]+"
只輸出文件中匹配到的部分 -o 選項:
echo this is a test line. | grep -o -E "[a-z]+\."
line.
echo this is a test line. | egrep -o "[a-z]+\."
line.
統計文件或者文本中包含匹配字符串的行數 -c 選項:
grep -c "text" file_name
輸出包含匹配字符串的行數 -n 選項:
grep "text" -n file_name
或
cat file_name | grep "text" -n
#多個文件
grep "text" -n file_1 file_2
打印樣式匹配所位于的字符或字節偏移:
echo gun is not unix | grep -b -o "not"
7:not
#一行中字符串的字符便宜是從該行的第一個字符開始計算,起始值為0。選項 -b -o 一般總是配合使用。
搜索多個文件并查找匹配文本在哪些文件中:
grep -l "text" file1 file2 file3...
grep遞歸搜索文件
在多級目錄中對文本進行遞歸搜索:
grep "text" . -r -n
# .表示當前目錄。
忽略匹配樣式中的字符大小寫:
echo "hello world" | grep -i "HELLO"
hello
選項 -e 制動多個匹配樣式:
echo this is a text line | grep -e "is" -e "line" -o
is
line
#也可以使用-f選項來匹配多個樣式,在樣式文件中逐行寫出需要匹配的字符。
cat patfile
aaa
bbb
echo aaa bbb ccc ddd eee | grep -f patfile -o
在grep搜索結果中包括或者排除指定文件:
#只在目錄中所有的.php和.html文件中遞歸搜索字符"main()"
grep "main()" . -r --include *.{php,html}
#在搜索結果中排除所有README文件
grep "main()" . -r --exclude "README"
#在搜索結果中排除filelist文件列表里的文件
grep "main()" . -r --exclude-from filelist
使用0值字節后綴的grep與xargs:
#測試文件:
echo "aaa" > file1
echo "bbb" > file2
echo "aaa" > file3
grep "aaa" file* -lZ | xargs -0 rm
#執行后會刪除file1和file3,grep輸出用-Z選項來指定以0值字節作為終結符文件名(\0),xargs -0 讀取輸入并用0值字節終結符分隔文件名,然后刪除匹配文件,-Z通常和-l結合使用。
grep靜默輸出:
grep -q "test" filename
#不會輸出任何信息,如果命令運行成功返回0,失敗則返回非0值。一般用于條件測試。
打印出匹配文本之前或者之后的行:
#顯示匹配某個結果之后的3行,使用 -A 選項:
seq 10 | grep "5" -A 3
5
6
7
8
#顯示匹配某個結果之前的3行,使用 -B 選項:
seq 10 | grep "5" -B 3
2
3
4
5
#顯示匹配某個結果的前三行和后三行,使用 -C 選項:
seq 10 | grep "5" -C 3
2
3
4
5
6
7
8
#如果匹配結果有多個,會用“--”作為各匹配結果之間的分隔符:
echo -e "a\nb\nc\na\nb\nc" | grep a -A 1
a
b
--
a
b
============================================================================================================================================================================================================
egrep命令:
文件過濾分割與合并
egrep命令用于在文件內查找指定的字符串。egrep執行效果與grep -E相似,使用的語法及參數可參照grep指令,與grep的不同點在于解讀字符串的方法。egrep是用extended regular expression語法來解讀的,而grep則用basic regular expression 語法解讀,extended regular expression比basic regular expression的表達更規范。
語法
egrep(選項)(查找模式)(文件名1,文件名2,……)
實例
顯示文件中符合條件的字符。例如,查找當前目錄下所有文件中包含字符串"Linux"的文件,可以使用如下命令:
egrep Linux *
結果如下所示:
#以下五行為 testfile 中包含Linux字符的行
testfile:hello Linux!
testfile:Linux is a free Unix-type operating system.
testfile:This is a Linux testfile!
testfile:Linux
testfile:Linux
#以下兩行為testfile1中含Linux字符的行
testfile1:helLinux!
testfile1:This a Linux testfile!
#以下兩行為 testfile_2 中包含Linux字符的行
testfile_2:Linux is a free unix-type opterating system
testfile_2:Linux test
============================================================================================================================================================================================================
測試::::
[root@pantinglinux]# ls
1.txt 234 aa.txt anaconda-ks.cfg.1 新建文本文檔_(2).txt
[root@pantinglinux]# mkdir grep
[root@pantinglinux]# cd grep/
[root@pantinglinux]# cp /etc/passwd .
[root@pantinglinux]# ls
passwd
[root@pantinglinux]# pwd
/root/grep
[root@pantinglinux]# ls
passwd
[root@pantinglinux]# grep 'nologin' passwd?
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
adkxx1:x:1006:1001::/home/adkxx:/sbin/nologin
[root@pantinglinux]# which grep?
alias grep='grep --color=auto'
/usr/bin/grep
[root@pantinglinux]# /usr/bin/grep 'nologin' passwd?
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
adkxx1:x:1006:1001::/home/adkxx:/sbin/nologin
[root@pantinglinux]# grep -c 'nologin' passwd?
18
[root@pantinglinux]# grep -n 'nologin' passwd?
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
15:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
16:dbus:x:81:81:System message bus:/:/sbin/nologin
17:polkitd:x:998:996:User for polkitd:/:/sbin/nologin
18:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
19:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
20:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
21:chrony:x:997:995::/var/lib/chrony:/sbin/nologin
24:adkxx1:x:1006:1001::/home/adkxx:/sbin/nologin
[root@pantinglinux]# vim passwd?
[root@pantinglinux]# grep -ni 'nologin' passwd?
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
15:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
16:dbus:x:81:81:System message bus:/:/sbin/nologin
17:polkitd:x:998:996:User for polkitd:/:/sbin/nologin
18:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
19:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
20:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
21:chrony:x:997:995::/var/lib/chrony:/sbin/nologin
24:adkxx1:x:1006:1001::/home/adkxx:/sbin/nologin
[root@pantinglinux]# vim passwd?
[root@pantinglinux]# grep -ni 'nologin' passwd?
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
15:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
16:dbus:x:81:81:System message bus:/:/sbin/nologin
17:polkitd:x:998:996:User for polkitd:/:/sbin/nologin
18:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
19:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
20:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
21:chrony:x:997:995::/var/lib/chrony:/sbin/nologin
24:adkxx1:x:1006:1001::/home/adkxx:/sbin/nologin
[root@pantinglinux]# vim passwd?
[root@pantinglinux]# grep -ni 'nologin' passwd?
2:bin:x:1:1:bin:/bin:/sbin/NOLOgin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
15:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
16:dbus:x:81:81:System message bus:/:/sbin/nologin
17:polkitd:x:998:996:User for polkitd:/:/sbin/nologin
18:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
19:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
20:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
21:chrony:x:997:995::/var/lib/chrony:/sbin/nologin
24:adkxx1:x:1006:1001::/home/adkxx:/sbin/nologin
[root@pantinglinux]# grep -vni 'nologin' passwd?
1:root:x:0:0:root:/root:/bin/bash
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
22:adkee:x:1000:1000::/home/adkee:/bin/bash
23:adkee1:x:1001:1002::/home/adkee1:/bin/bash
25:adkxx5:x:1007:1007::/home/adkxx5:/bin/bash
[root@pantinglinux]# grep -r 'root' /etc/
/etc/pki/ca-trust/ca-legacy.conf:# The upstream Mozilla.org project tests all changes to the root CA
/etc/pki/ca-trust/ca-legacy.conf:# to temporarily keep certain (legacy) root CA certificates trusted,
/etc/pki/ca-trust/ca-legacy.conf:# It may keep root CA certificate as trusted, which the upstream?
/etc/pki/ca-trust/extracted/README:root CA certificates.
/etc/pki/ca-trust/extracted/java/README:root CA certificates.
匹配到二進制文件 /etc/pki/ca-trust/extracted/java/cacerts
/etc/pki/ca-trust/extracted/openssl/README:root CA certificates.
/etc/pki/ca-trust/extracted/pem/README:root CA certificates.
/etc/pki/tls/certs/make-dummy-cert: echo root@localhost.localdomain
/etc/pki/tls/openssl.cnf:dir = ./demoCA # TSA root directory
/etc/rpm/macros.perl:%define perl_br_testdir %{buildroot}%{perl_testdir}/%{cpan_dist_name} \
/etc/rpm/macros.perl:%defattr(-,root,root,-)\
/etc/yum/pluginconf.d/fastestmirror.conf:# as root).
/etc/aliases:postmaster: root
/etc/aliases:bin: root
/etc/aliases:daemon: root
/etc/aliases:adm: root
/etc/aliases:lp: root
/etc/aliases:sync: root
/etc/aliases:shutdown: root
/etc/aliases:halt: root
/etc/aliases:mail: root
/etc/aliases:news: root
/etc/aliases:uucp: root
/etc/aliases:operator: root
/etc/aliases:games: root
/etc/aliases:gopher: root
/etc/aliases:ftp: root
/etc/aliases:nobody: root
/etc/aliases:radiusd: root
/etc/aliases:nut: root
/etc/aliases:dbus: root
/etc/aliases:vcsa: root
/etc/aliases:canna: root
/etc/aliases:wnn: root
/etc/aliases:rpm: root
/etc/aliases:nscd: root
/etc/aliases:pcap: root
/etc/aliases:apache: root
/etc/aliases:webalizer: root
/etc/aliases:dovecot: root
/etc/aliases:fax: root
/etc/aliases:quagga: root
/etc/aliases:radvd: root
/etc/aliases:pvm: root
/etc/aliases:amandabackup: root
/etc/aliases:privoxy: root
/etc/aliases:ident: root
/etc/aliases:named: root
/etc/aliases:xfs: root
/etc/aliases:gdm: root
etc/postfix/master.cf:# service type private unpriv chroot wakeup maxproc command + args
/etc/audit/auditd.conf:log_group = root
/etc/audit/auditd.conf:action_mail_acct = root
/etc/sudoers:## the root user, without needing the root password.
/etc/sudoers:## Allow root to run any commands anywhere
/etc/sudoers:root ALL=(ALL) ALL
/etc/sudoers:## cdrom as root
匹配到二進制文件 /etc/aliases.db
匹配到二進制文件 /etc/.profile.swp
/etc/updatedb.conf:PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs"
匹配到二進制文件 /etc/.fstab.swp
[root@pantinglinux]# grep 'root' /etc/
grep: /etc/: 是一個目錄
[root@pantinglinux]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@pantinglinux]# grep 'root' /etc/ > /
.autorelabel etc/ media/ root/ sys/
bin/ home/ mnt/ run/ tmp/
boot/ lib/ opt/ sbin/ usr/
dev/ lib64/ proc/ srv/ var/
[root@pantinglinux]# grep 'root' /etc/ > /
.autorelabel etc/ media/ root/ sys/
bin/ home/ mnt/ run/ tmp/
boot/ lib/ opt/ sbin/ usr/
dev/ lib64/ proc/ srv/ var/
[root@pantinglinux]# grep 'root' /etc/ > /
.autorelabel etc/ media/ root/ sys/
bin/ home/ mnt/ run/ tmp/
boot/ lib/ opt/ sbin/ usr/
dev/ lib64/ proc/ srv/ var/
[root@pantinglinux]# grep 'root' /etc/ > /tmp/passwd.log
grep: /etc/: 是一個目錄
[root@pantinglinux]# grep -r 'root' /etc/ > /tmp/passwd.log?
[root@pantinglinux]# grep passwd /tmp/passwd.log?
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
/etc/passwd-:root:x:0:0:root:/root:/bin/bash
/etc/passwd-:operator:x:11:0:operator:/root:/sbin/nologin
/etc/postfix/main.cf:# the system passwd file in the chroot jail is just not practical.
[root@pantinglinux]# grep -A2 'root' passwd?
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/NOLOgin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@pantinglinux]# grep -nA2 'root' passwd?
1:root:x:0:0:root:/root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/NOLOgin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
10:operator:x:11:0:operator:/root:/sbin/nologin
11-games:x:12:100:games:/usr/games:/sbin/nologin
12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@pantinglinux]# grep -nB2 'root' passwd?
1:root:x:0:0:root:/root:/bin/bash
--
8-halt:x:7:0:halt:/sbin:/sbin/halt
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
[root@pantinglinux]# grep -nC2 'root' passwd?
1:root:x:0:0:root:/root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/NOLOgin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
8-halt:x:7:0:halt:/sbin:/sbin/halt
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11-games:x:12:100:games:/usr/games:/sbin/nologin
12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@pantinglinux]# grep '[0-9]' passwd?
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/NOLOgin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
adkee:x:1000:1000::/home/adkee:/bin/bash
adkee1:x:1001:1002::/home/adkee1:/bin/bash
adkxx1:x:1006:1001::/home/adkxx:/sbin/nologin
adkxx5:x:1007:1007::/home/adkxx5:/bin/bash
[root@pantinglinux]# grep -v '[0-9]' passwd?
[root@pantinglinux]# grep -v '[0-9]' /etc/inittab?
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#
[root@pantinglinux]# grep -vn '[0-9]' /etc/inittab?
1:# inittab is no longer used when using systemd.
2:#
3:# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
4:#
5:# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
6:#
7:# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
8:#
11:#
12:# To view current default target, run:
13:# systemctl get-default
14:#
15:# To set a default target, run:
16:# systemctl set-default TARGET.target
17:#
[root@pantinglinux]# vim /etc/inittab?
[root@pantinglinux]# grep -n '^#' /etc/inittab?
1:# inittab is no longer used when using systemd.
2:#
3:# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
4:#
5:# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
6:#
7:# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
8:#
9:# multi-user.target: analogous to runlevel 3
10:# graphical.target: analogous to runlevel 5
11:#
12:# To view current default target, run:
13:# systemctl get-default
14:#
15:# To set a default target, run:
16:# systemctl set-default TARGET.target
17:#
[root@pantinglinux]#
?
轉載于:https://www.cnblogs.com/pta188/p/8945571.html
總結
以上是生活随笔為你收集整理的正则介绍_grep上 grep中 grep下的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于使用旋转四元数绕轴旋转θ角度时,使用
- 下一篇: 微信公众号消息推送-模板消息发送