# 安装 ```bash curl -sSfLk -O https://github.com/BurntSushi/ripgrep/releases/download/11.0.2/ripgrep-11.0.2-x86_64-unknown-linux-musl.tar.gz tar -xvf ripgrep-11.0.2-x86_64-unknown-linux-musl.tar.gz sudo cp ripgrep-11.0.2-x86_64-unknown-linux-musl/rg /usr/local/bin/ rg -V ``` # ripgrep ```bash rg 'name' ./ # 搜索name为独立单词的内容(-w), 相当于 rg -w 'name' ./ # 只打印包含匹配内容的文件名(-l) rg -w 'name' ./ -l # 只搜索cpp文件(-t), 可以用-T来不搜索某种类型文件 rg -w 'name' ./ -tcpp # 正则搜索(-e) rg -e "sa.*port" ./ -tcpp # 显示匹配内容及上下各两行(-C), -A/-B类似 rg -e "sa.*port" ./ -tcpp -C2 # 显示不含"debug"的行(-v) rg -v "debug" -tcpp ./ # 只显示匹配部分(-o) rg -e "if.*debug" ./ -tcpp -o # 忽略大小写(-i) rg -ie "if.*debug" ./ -tcpp -o # 把pattern当成常量字符(-F), 像.(){}*+不需要escape,如果要搜索的字符是以-开头,那么要用--来作为分隔符,或者用rg -e "-foo" rg -F "i++)" ./ -tcpp # 打印所有将被搜索的文件 --files rg --files # 输出内置识别文件类型 rg --type-list ``` # fzf ```bash https://github.com/junegunn/fzf/releases https://github.com/sharkdp/fd https://github.com/rupa/z ``` # grep ```bash grep -v grep -E 'l\{2,\}' 2.txt grep -E 'h(ell|a)o' test.txt grep '[a-z]\{5,\}' test.txt grep -xf a.txt b.txt //查询a与b共同存在的行 grep -vxf b.txt a.txt //查询a的行不在b文件中面的,就是a比b多出来的行 grep -v '^h' test.txt //显示非以h开发的 grep -E '^(h|y)' test.txt //-E支持扩展正则,相当于egrep grep -A 1 'hello' test.txt //除了显示匹配到的行也显示它之后的一行 grep -B 1 'hello' test.txt //除了显示匹配到的行也显示它之前的一行 grep -C 1 'hello' test.txt //除了显示匹配到的行也显示它之前和之后的一行 grep -r "hello" xx //在xx文件夹查找 grep -c //统计匹配的行数 grep -n //显示行号、 grep -v '#' test.txt 取出所有未被注释的行 grep -v '^hello' test.txt //显示不以hello开头的行 egrep -v "(#|^$)" filename(文件名) Example: grep -i 'hello world' menu.h main.c 递归查找某目录下的( 包含某字符串[字符串忽略大小写]的)所有文件,只输出文件名 grep -rli "字符串" --include="*.cpp" --include="*.h" "目录" 递归查找某目录下的(不包含某字符串[字符串忽略大小写]的)所有文件,只输出文件名 grep -rliv "字符串" --include="*.cpp" --include="*.h" "目录" 递归查找当前目录下所有包含某字符串的文件,输出文件名、行号、该行内容 grep -r -Hn "字符串" #(或)# grep -r -Hn "字符串" ./ 递归查找当前目录下所有包含某单词(CharacterString大小写敏感)的文件,输出文件名、行号、该行内容 grep -r -Hn -P '\bCharacterString\b' # 搜索"正则表达式 元字符 metacharacter"查看详情 递归查找当前目录下所有包含某单词(Character的大小写不敏感)的文件,输出文件名、行号、该行内容 grep -r -Hn -P '\b(?i)Character(?-i)String\b' # 搜索"正则表达式 模式修改符"查看详情 egrep -v "(#|^$)" filename(文件名)去空白行和注释 grep -Po '"'"access_token"'"\s*:\s*"\K([^"]*)' ps -eo pid,cmd ps aux # USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ps -ef # UID PID PPID C STIME TTY TIME CMD kill -9 `ps -ef | grep ssh |grep 8118 | grep -v grep |awk 'NR==1 {print $2}'` kill -9 `ps -eo pid,cmd | grep ssh |grep 8118 | grep -v grep |awk 'NR==1 {print $1}'` ps -eo pid,stat,pri,uid --sort uid ps -eo pid,user,stat,args,rss --sort rss ps axjf ps aux ps -ef ps -lA ``` # 参考 * [releases](https://github.com/BurntSushi/ripgrep/releases)