date: 2020-10-20T09:26:21+08:00 # 创建日期 author: "Rustle Karl" # 作者
title: "grep 搜索匹配关键词" # 文章标题
url: "posts/linux/tools/standard/grep" # 设置网页永久链接 tags: [ "linux", "cmd" ] # 标签 series: [ "Linux 学习笔记" ] # 系列 categories: [ "学习笔记" ] # 分类
weight: 20 # 排序优先级 chapter: false # 设置为章节
在文本中搜索匹配的关键词,显示结果
grep [OPTION]... PATTERN [FILE]...| 参数 | 作用 |
|---|---|
| -E, --extended-regexp | PATTERN is an extended regular expression |
| -F, --fixed-strings | PATTERN is a set of newline-separated strings |
| -G, --basic-regexp | PATTERN is a basic regular expression (default) |
| -P, --perl-regexp | PATTERN is a Perl regular expression |
| -e, --regexp = PATTERN | use PATTERN for matching |
| -f, --file = FILE | obtain PATTERN from FILE |
| -i, --ignore-case | ignore case distinctions |
| -w, --word-regexp | force PATTERN to match only whole words |
| -x, --line-regexp | force PATTERN to match only whole lines |
| -z, --null-data | a data line ends in 0 byte, not newline |
| 参数 | 作用 |
|---|---|
| -s, --no-messages | suppress error messages |
| -v, --invert-match | select non-matching lines |
| -V, --version | display version information and exit |
| --help | display this help text and exit |
| 参数 | 作用 |
|---|---|
| -m, --max-count = NUM | stop after NUM selected lines |
| -b, --byte-offset | print the byte offset with output lines |
| -n, --line-number | print line number with output lines |
| --line-buffered | flush output on every line |
| -H, --with-filename | print file name with output lines |
| -h, --no-filename | suppress the file name prefix on output |
| --label = LABEL | use LABEL as the standard input file name prefix |
| -o, --only-matching | show only the part of a line matching PATTERN |
| -q, --quiet, --silent | suppress all normal output |
| --binary-files = TYPE | assume that binary files are TYPE ; TYPE is 'binary', 'text', or 'without-match' |
| -a, --text | equivalent to --binary-files = text |
| -I | equivalent to --binary-files = without-match |
| -d, --directories = ACTION | how to handle directories ; ACTION is 'read', 'recurse', or 'skip' |
| -D, --devices = ACTION | how to handle devices, FIFOs and sockets ; ACTION is 'read' or 'skip' |
| -r, --recursive | like --directories = recurse |
| -R, --dereference-recursive | likewise, but follow all symlinks |
| --include = FILE_PATTERN | search only files that match FILE_PATTERN |
| --exclude = FILE_PATTERN | skip files and directories matching FILE_PATTERN |
| --exclude-from = FILE | skip files matching any file pattern from FILE |
| --exclude-dir = PATTERN | directories that match PATTERN will be skipped. |
| -L, --files-without-match | print only names of FILEs with no selected lines |
| -l, --files-with-matches | print only names of FILEs with selected lines |
| -c, --count | print only a count of selected lines per FILE |
| -T, --initial-tab | make tabs line up (if needed) |
| -Z, --null | print 0 byte after FILE name |
| 参数 | 作用 |
|---|---|
| -B, --before-context = NUM | print NUM lines of leading context |
| -A, --after-context = NUM | print NUM lines of trailing context |
| -C, --context = NUM | print NUM lines of output context |
| -NUM | same as --context = NUM |
| --color[ = WHEN], --colour[ = WHEN] | use markers to highlight the matching strings ; WHEN is 'always', 'never', or 'auto' |
| -U, --binary | do not strip CR characters at EOL (MSDOS/Windows) |
- 显示匹配结果的行号
echo -e "abc\ndef\nghi\njkl" > demo
cat demo
abc
def
ghi
jkl
grep -n ghi demo
3:ghi- 反选匹配结果
grep -nv ghi demo
1:abc
2:def
4:jkl- 在 Linux 系统中,
/etc/passwd文件保存着所有用户的信息,而一旦用户的登录终端被设置成/sbin/nologin,则表示不允许登录系统,因此可以使用grep命令来查找出当前系统中不允许登录系统的所有用户信息:
grep /sbin/nologin /etc/passwd
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sshd:x:107:65534::/run/sshd:/usr/sbin/nologin