相关文章推荐
爱笑的西红柿  ·  警告warning: strncpy ...·  2 月前    · 
近视的针织衫  ·  数据库>>云数据库 ...·  7 月前    · 
高兴的花卷  ·  MYSQL 8 VS MYSQL 5.7 ...·  1 年前    · 
威武的苹果  ·  python json null vs ...·  1 年前    · 



Unix/Linux 中的 grep 命令参数及示例用法

  • 作用
  • 语法
  • 主要参数
  • 示例命令


作用

Grep 筛选器在文件中搜索特定的字符模式,并显示包含该模式的所有行。在文件中搜索的模式称为 正则表达式 . ( grep 代表正则表达式的全局搜索和打印输出)。

语法

grep -options(参数) pattern(关键词) files(文本文件)

主要参数

-c :只输出匹配模式的 行数
-h :只显示匹配的行,不显示文件名。
-i 忽略 匹配时的大小写。
-l :只显示文件名列表。
-n :显示匹配的行及其 行号
-r :显示文件所在 目录 即路径。
-v :输出所有不匹配的行。
-e exp : 指定该选项的表达式,可以 多次 使用。
-f file :指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-E :将样式为延伸的正则表达式来使用。
-w :匹配整个单词。
-r :明确要求搜索子目录。
-d skip :忽略子目录。
-o :只打印匹配行的匹配部分,每个这样的部分在单独的输出行上。
\ :忽略正则表达式中特殊字符的原有含义。
[ ] :单个字符,如[A]即A符合要求。
[ - ] :范围,如[A-Z],即A、B、C一直到Z都符合要求。
. :所有的单个字符。
* :所有字符,长度可以为0。

-A n : 除了显示符合范本样式的那一行之外,并显示 该行之后 n
-B n : 除了显示符合范本样式的那一行之外,并显示 该行之前 n
-C n : 除了显示符合范本样式的那一行之外,并显示 该行之前以及之后 n

示例命令

  1. 考虑下面的文件作为输入,键入 cat > geekfile.txt 后回车;
$ cat > geekfile.txt
  1. 输入如下内容并键入回车;
unix is great os. unix is opensource. unix is free os.
learn operating system.
Linux is a family of open-source Unix-like operating systems based on the Linux kernel.
Unix linux which one you choose.
uNix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.
  1. 在键盘上按下 Ctrl+D (或者键入 Control-D ),保存文本并回到shell提示符。

1、 -i 忽略匹配时的大小写:选项允许在被检索文件中不敏感地搜索字符串大小写。它匹配“ UNIX ”、“ Unix ”、“ unix ”等单词。

$ grep -i "UNix" geekfile.txt

输出:

在grep匹配到的每行前后打印内容 grep只输出匹配内容_linux


2、 -c 只输出匹配模式的行数: 我们可以找到与给定字符串模式匹配的行数。

$ grep -c "unix" geekfile.txt

输出:

在grep匹配到的每行前后打印内容 grep只输出匹配内容_在grep匹配到的每行前后打印内容_02


3、 -l 显示与模式匹配的文件名: 我们可以只显示包含给定字符串模式的文件。

$ grep -l "unix" *
$ grep -l "unix" geekfile.txt f1.txt f2.txt f3.txt

输出:

在grep匹配到的每行前后打印内容 grep只输出匹配内容_grep_03


在grep匹配到的每行前后打印内容 grep只输出匹配内容_在grep匹配到的每行前后打印内容_04


4、 -w 匹配文件中的整个单词: 默认情况下,grep 匹配给定的字符串/模式,即使它在文件中作为子字符串出现。Grep 的 -w 选项使它只匹配整个单词。

$ grep -w "unix" geekfile.txt

输出:

在grep匹配到的每行前后打印内容 grep只输出匹配内容_unix_05


5、 -o 只打印匹配行的匹配部分: 默认情况下,grep 显示具有匹配字符串的整个行。我们可以使用 -o 选项使 grep 只显示匹配的字符串。

$ grep -o "unix" geekfile.txt

输出:

在grep匹配到的每行前后打印内容 grep只输出匹配内容_grep_06


6、 grep -n 输出时显示行号: 显示匹配行的文件及行号。

$ grep -n "unix" geekfile.txt

输出:

在grep匹配到的每行前后打印内容 grep只输出匹配内容_shell_07


7、 -v 反转模式匹配: 可以使用 -v 选项显示与指定搜索模式不匹配的行。

$ grep -v "unix" geekfile.txt

输出:

在grep匹配到的每行前后打印内容 grep只输出匹配内容_在grep匹配到的每行前后打印内容_08


8、 ^ 匹配以字符串开头的行: ^ 正则表达式模式指定行的开头。可以在 grep 中使用它来匹配以给定字符串或模式开头的行。

$ grep "^unix" geekfile.txt

输出:

在grep匹配到的每行前后打印内容 grep只输出匹配内容_linux_09


9、 $ 匹配以字符串结尾的行: $ 正则表达式模式指定行的结尾。可以在 grep 中使用它来匹配以给定字符串或模式结尾的行。

$ grep "os.$" geekfile.txt

输出:

在grep匹配到的每行前后打印内容 grep只输出匹配内容_grep_10


10、 -e 指定该选项的表达式,可以多次使用:

$ grep –e "unix" –e "linux" –e "open-source" geekfile.txt

输出:

在grep匹配到的每行前后打印内容 grep只输出匹配内容_shell_11


11、 -f file 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。

$ cat > pattern.txt
Agarwal
Aggarwal
Agrawal
$ grep –f pattern.txt  geekfile.txt
$ grep -f pattern.txt  geekfile.txt noSuchFile.txt

输出:

在grep匹配到的每行前后打印内容 grep只输出匹配内容_unix_12


12、从一个文件中打印 n 行: -A 结果后 打印搜索行和 n 行, -B 结果前 打印搜索行和 n 行, -C 结果前后 打印搜索行和 n 行。

  1. 语法:
$ grep -A[NumberOfLines(n)] [search] [file]  
$ grep -B[NumberOfLines(n)] [search] [file]  
$ grep -C[NumberOfLines(n)] [search] [file]
  1. 例子:
$ grep -A1 learn geekfile.txt
  1. 输出:

13、 -r 查找文件所在 目录 即路径:

$ grep –r "linux" ./

输出:

在grep匹配到的每行前后打印内容 grep只输出匹配内容_unix_13


postgres 字符串截取最后

一、目的pgsql常用的sql以及对应的实例。二、具体实例1.pgsql总结:函数 (1)连接字符:concat或者|| 实例:-》SELECT concat(student_de.id,student_de.NAME) hebing from student_de INNER join studentbak on student_de."id"=studentbak."id" -》SELEC