Home > Linux > Main text

Usage of grep command


Tag: grep, awk, sed


grep的用法


同时匹配多个pattern中的某一个 (OR)

grep "pattern1\|pattern2" file.txt
grep -E "pattern1|pattern2" file.txt
grep -e pattern1 -e pattern2 file.txt
egrep "pattern1|pattern2" file.txt

这种操作用其他的命令也可以实现,比如:

awk '/pattern1|pattern2/' file.txt
sed -e '/pattern1/b' -e '/pattern2/b' -e d file.txt

同时满足多个模式 (AND)

grep -E 'pattern1.*pattern2' file.txt # in that order
grep -E 'pattern1.*pattern2|pattern2.*pattern1' file.txt # in any order
grep 'pattern1' file.txt | grep 'pattern2' # in any order

用其他命令实现:

awk '/pattern1.*pattern2/' file.txt # in that order
awk '/pattern1/ && /pattern2/' file.txt # in any order

sed '/pattern1.*pattern2/!d' file.txt # in that order
sed '/pattern1/!d; /pattern2/!d' file.txt # in any order

匹配不满足给定模式的行

grep -v 'pattern1' file.txt
awk '!/pattern1/' file.txt
sed -n '/pattern1/!p' file.txt

匹配不满足多个给定模式的行

# https://unix.stackexchange.com/questions/104770/grep-multiple-pattern-negative-match
grep -vE 'pattern1|pattern2|pattern3' file.txt

只输出匹配的字符: 参数-o

grep -o NM_001131052 utr3.bed

Grep Compressed .gz Files At A Shell Prompt zgrep

$ zgrep 'word-to-search' /path/to/test.gz
$ zgrep 'GET /faq/a-long-url/' /path/to/access.log.gz

If you link this blog, please refer to this page, thanks!
Post link:https://tsinghua-gongjing.github.io/posts/grep.html

Previous: Bar plot