grep、awk、sed

发布时间 2023-09-12 16:42:32作者: -=-

grep<grep [选项] 模式 [文件...]>

-i, --ignore-case:忽略大小写,使搜索不区分大小写。

-v, --invert-match:反转匹配,仅显示不包含指定模式的行。

-r, --recursive:递归搜索,用于在指定目录及其子目录中搜索文件。

-l, --files-with-matches:仅显示包含匹配模式的文件名,而不是匹配的行内容。

-L, --files-without-match:仅显示不包含匹配模式的文件名。

-n, --line-number:显示匹配行的行号。

-c, --count:仅显示匹配行的数量,而不是行内容。

-w, --word-regexp:仅匹配整个单词,而不是部分匹配。

-o, --only-matching:仅显示匹配的文本,而不是整行。

-A NUM, --after-context=NUM:显示匹配行及其后的 NUM 行内容。

-B NUM, --before-context=NUM:显示匹配行及其前的 NUM 行内容。

-C NUM, -NUM, --context=NUM:显示匹配行及其前后的 NUM 行内容。

-e PATTERN, --regexp=PATTERN:指定搜索的模式,可以多次使用以指定多个模式。

-f FILE, --file=FILE:从文件中读取搜索模式,每行一个模式。

--exclude=PATTERN:排除匹配指定模式的文件或目录。

--exclude-from=FILE:从文件中读取排除模式。

--include=PATTERN:仅包括匹配指定模式的文件。

-q, --quiet, --silent:静默模式,不输出匹配的内容,仅返回匹配状态。

--color=auto:在匹配文本上着色,可使用选项值 "always""never" 来控制是否总是着色。

-P, --perl-regexp:使用Perl兼容正则表达式语法进行匹配。

-E, --extended-regexp:使用扩展正则表达式语法进行匹配(默认情况下)。

awk<awk [选项] '模式 { 动作 }' 文件>

-F, --field-separator=分隔符:指定字段分隔符,默认为单个空格或制表符。通过这个选项,您可以定义字段之间的分隔符。

-v var=value:定义一个变量并初始化它,可以在 awk 脚本中使用。

-f 文件:从文件中读取 awk 脚本,而不是在命令行中直接提供脚本。

-W, --word-regexp:仅匹配整个单词,而不是部分匹配。

-v var:打印 awk 内置变量的值,例如 NR(记录号)、NF(字段数)等。

-F'[regex]':使用正则表达式作为字段分隔符。

awk 脚本:

awk 脚本由模式和动作组成,模式指定了何时执行动作,动作则指定了要执行的操作。以下是一些常见的模式和动作示例:

模式:模式定义何时执行动作。

/pattern/:当记录(行)包含指定的模式时执行动作。
condition:当条件满足时执行动作。条件可以是数值比较、正则表达式匹配等。
动作:动作是在模式匹配时执行的命令。

{ print $1 }:打印第一个字段。
{ sum += $2 }:累加第二个字段的值到 sum 变量。
{ if ($3 > 10) print $0 }:如果第三个字段大于 10,则打印整个记录。
内置变量:

awk 提供了一些内置变量,用于访问有关输入数据的信息:

NR:记录号,表示当前记录的行号。
NF:字段数,表示当前记录的字段数量。
$0:当前记录的完整文本。
$1、$2、...、$NF:当前记录的字段值。

sed<sed [选项] '编辑命令' 文件>

-n, --quiet, --silent:静默模式,只有经过编辑命令处理的行才会被打印到标准输出。如果没有 -n 选项,所有行都会被打印。

-e SCRIPT, --expression=SCRIPT:使用多个编辑命令(脚本),可以在一个命令行中多次使用 -e 选项。

-f SCRIPT-FILE, --file=SCRIPT-FILE:从文件中读取 sed 脚本,而不是在命令行中提供脚本。

-i[SUFFIX], --in-place[=SUFFIX]:在文件中直接编辑,替换原始文件的内容。可选的 SUFFIX 用于备份原始文件。

-r, --regexp-extended:使用扩展正则表达式语法进行匹配(默认情况下使用基本正则表达式语法)。

-s, --separate:处理多个文件时,将它们视为独立的,即重新开始编辑命令。

-u, --unbuffered:禁用输出缓冲,尽快将内容输出。

-n N, --quiet N, --silent N:仅打印从第 N 行开始的输出。

-V, --version:显示 sed 的版本信息。

编辑命令:

sed 的编辑命令由一个地址和一个动作组成。地址指定了应用动作的行(或范围),动作则定义了对匹配的行执行的操作。以下是一些常见的编辑命令:

地址:可以是行号、正则表达式、范围或组合。

N:第 N 行。
/pattern/:包含指定模式的行。
1,10:行号范围。
/start/,/end/:从 start 行到 end 行的范围。
动作:定义对匹配行执行的操作。

p:打印匹配的行。
d:删除匹配的行。
s/old/new/:替换第一个匹配的 old 为 new。
s/old/new/g:替换所有匹配的 old 为 new。
i\:在匹配行之前插入文本。
a\:在匹配行之后追加文本。