.github
.husky
assets
docs
Neo4j.md
adb.md
adobe-lightroom.md
adobe-photoshop.md
adobe-xd.md
android-studio.md
ansible.md
apt.md
ascii-code.md
aspect-ratio.md
awk.md
bash.md
blender.md
c.md
cargo.md
chmod.md
chown.md
cmake.md
cmd.md
cocoapods.md
colors-named.md
conan.md
conda.md
cpp.md
cron.md
cs.md
css.md
curl.md
dart.md
django.md
docker.md
dockerfile.md
ejs.md
elasticsearch.md
electron.md
elixir.md
emacs.md
emmet.md
emoji.md
es6.md
expressjs.md
fastapi.md
feds.md
ffmpeg.md
figma.md
find.md
finder.md
firefox.md
flask.md
flutter.md
ftp.md
gdb.md
git.md
github-actions.md
github-copilot.md
github.md
gitlab-ci.md
gitlab.md
gmail.md
golang.md
google-chrome.md
graphql.md
grep.md
homebrew.md
html-char.md
html.md
htmx.md
htop.md
http-status-code.md
ini.md
intelli-j-idea.md
iptables.md
iso-3166-1.md
iso-639-1.md
java.md
javascript.md
jest.md
jq.md
jquery.md
json.md
julia.md
justfile.md
koajs.md
kotlin.md
kubernetes.md
laravel.md
latex.md
lerna.md
lessjs.md
linux-command.md
lsof.md
lua.md
make.md
markdown.md
matlab.md
mime.md
mitmproxy.md
mongodb.md
mysql.md
neo4j.md
nestjs.md
netcat.md
netstat.md
nextjs.md
nginx.md
npm.md
nvm.md
openssl.md
oracle.md
package.json.md
pacman.md
pandoc.md
php.md
phpstorm.md
pm2.md
postgres.md
ps.md
pycharm.md
python.md
pytorch.md
quickreference.md
r.md
react-native.md
react.md
reactrouter.md
redis.md
regex.md
resolutions.md
ruby.md
rust.md
sass.md
scala.md
screen.md
sdkman.md
sed.md
semver.md
sketch.md
ssh.md
styled-components.md
stylus.md
sublime-text.md
subversion.md
swift.md
swiftui.md
symbol-code.md
sysdig.md
systemd.md
tailwindcss.md
tar.md
taskset.md
tauri.md
tmux.md
toml.md
twitter.md
typescript.md
vim.md
vscode.md
vue.md
vue2.md
webstorm.md
xcode.md
xpath.md
yaml.md
yarn.md
yum.md
zip.md
.dockerignore
.editorconfig
.gitattributes
.gitignore
.lintstagedrc
.markdownlint.json
.npmrc
.prettierignore
.prettierrc
.refsrc.json
CONTRIBUTING.md
Dockerfile
LICENSE
README.md
package.json
renovate.json

* format: fix markdown * update: fix markdown * update: fix cron problems * update: delete .markdownlintignore * update * chore: add tab -> 4 space * chore: fix tab -> 2 in the .editorconfig
4.0 KiB
4.0 KiB
Grep 备忘清单
本备忘单旨在快速提醒使用命令行程序 grep 所涉及的主要概念,并假设您已经了解其用法。
入门
使用
搜索标准输出(即文本流)
$ grep [options] search_string
在文件中搜索确切的字符串:
$ grep [options] search_string path/to/file
打印 myfile.txt 中包含字符串“mellon”的行
$ grep 'mellon' myfile.txt
文件名中接受通配符。
选项示例
选项 | 示例 | 说明 |
---|---|---|
-i |
grep -i ^DA demo.txt | 忘记区分大小写 |
-w |
grep -w "of" demo.txt | 仅搜索完整的单词 |
-A |
grep -A 3 'Exception' error.log | 匹配字符串后显示 3 行 |
-B |
grep -B 4 'Exception' error.log | 在匹配字符串前显示 4 行 |
-C |
grep -C 5 'Exception' error.log | 在匹配字符串周围显示 5 行 |
-r |
grep -r 'github.io' /var/log/nginx/ | 递归搜索 (在子目录内) |
-v |
grep -v 'warning' /var/log/syslog | 返回所有与模式不匹配的行 |
-e |
grep -e '^al' filename | 使用正则表达式 (以'al'开头的行) |
-E |
grep -E 'ja(s|cks)on' filename | 扩展正则表达式 (包含 jason 或 jackson 的行) |
-c |
grep -c 'error' /var/log/syslog | 计算匹配数 |
-l |
grep -l 'robot' /var/log/* | 打印匹配文件的名称 |
-o |
grep -o search_string filename | 只显示字符串的匹配部分 |
-n |
grep -n "go" demo.txt | 显示匹配的行号 |
Grep 正则表达式
参考
- Regex syntax (jaywcjlove.github.io)
- Regex examples (jaywcjlove.github.io)
有关更复杂的要求,请参阅完整版的正则表达式备忘单。
通配符(Wildcards)
:- | :- |
---|---|
. |
任何字符 |
? |
可选且只能出现一次 |
* |
可选的,可以多次出现 |
+ |
必需并且可以多次出现 |
量词(Quantifiers)
:- | :- |
---|---|
{n} |
前一项恰好出现 n 次 |
{n,} |
上一个项目出现 n 次或更多 |
{,m} |
上一个项目最多出现 n 次 |
{n,m} |
上一项出现在 n 到 m 次之间 |
POSIX
:- | :- |
---|---|
[:alpha:] |
任何大小写字母 |
[:digit:] |
任何数字 |
[:alnum:] |
任何大小写字母或数字 |
[:space:] |
任何空格 |
字符串
:- | :- |
---|---|
[A-Za-z] |
任何大小写字母 |
[0-9] |
任何数字 |
[0-9A-Za-z] |
任何大小写字母或数字 |
位置
:- | :- |
---|---|
^ |
行的开头 |
$ |
行结束 |
^$ |
空行 |
\< |
词的开头 |
\> |
词尾 |
更多示例
搜索命令行历史记录
history | grep git
输入过 git
命令的记录
搜索多个文件并查找匹配文本在哪些文件中
grep -l "text" file1 file2 file3...
多级目录中对文本进行递归搜索
grep "text" . -r -n
.
表示当前目录。
搜索结果中包括或者排除指定文件
# 目录中所有的 .php 和 .html 文件中
# 递归搜索字符 "main()"
grep "main()" . -r --include *.{php,html}
# 在搜索结果中排除所有 README 文件
grep "main()" . -r --exclude "README"
# 在搜索结果中排除 filelist 文件列表里的文件
grep "main()" . -r --exclude-from filelist
输出包含匹配字符串的行数 -n 选项
grep "text" -n file_name
# 或
cat file_name | grep "text" -n
#多个文件
grep "text" -n file_1 file_2
忽略匹配样式中的字符大小写
echo "hello world" | grep -i "HELLO"
# hello
统计文件或文本中包含匹配字符串的行数 -c 选项
grep -c "text" file_name
另见
- grep 中文文档 (jaywcjlove.github.io)