您的位置:首页 > 汽车 > 时评 > 广州17网_公司查名_网络优化工作应该怎么做_优化大师免安装版

广州17网_公司查名_网络优化工作应该怎么做_优化大师免安装版

2025/3/15 20:08:34 来源:https://blog.csdn.net/gofordata/article/details/146237050  浏览:    关键词:广州17网_公司查名_网络优化工作应该怎么做_优化大师免安装版
广州17网_公司查名_网络优化工作应该怎么做_优化大师免安装版

1.概述

Linux系统下,grep、sed和awk三个命令是最常用的、非常强大的文本处理工具,可以用于搜索、替换、过滤、排序等多种操作,掌握这三种工具的用法,可以大大提高我们在Linux下处理文本的效率。

2.grep命令

grep是一种非常常见的文本搜索工具,它可以搜索指定字符串在一个或多个文件中出现的行,并将结果输出到标准输出。语法格式如下:

grep [OPTIONS] PATTERN [FILE…]

其中,OPTIONS表示选项,PATTERN表示要搜索的模式,FILE表示要搜索的文件名。

grep命令的常见选项包括:

  1.  -i:忽略大小写
  2.  -w:完全匹配
  3.  -v:显示不匹配的行
  4.  -n:显示行号
  5.  -c:显示匹配行的数量
  6.  -r:递归搜索子目录
  7.  -e:搜索多个字符串

详细选项参数及其含义可以通过“grep --help”获取,具体如下:

[test@localhost ~]$ grep --help

用法: grep [选项]... 模式 [文件]...

在每个<文件>中查找给定<模式>

例如:grep -i 'hello world' menu.h main.c

<模式>可以包括多个模式字符串,使用换行符进行分隔。

模式选择与解释:

  -E, --extended-regexp     <模式> 是扩展正则表达式

  -F, --fixed-strings        <模式> 是字符串

  -G, --basic-regexp        <模式> 是基本正则表达式

  -P, --perl-regexp          <模式> 是 Perl 正则表达式

  -e, --regexp=<模式>       用指定的<模式>字符串来进行匹配操作

  -f, --file=<文件>          从给定<文件>中取得<模式>

  -i, --ignore-case           在模式和数据中忽略大小写

      --no-ignore-case       不要忽略大小写(默认)

  -w, --word-regexp          强制<模式>仅完全匹配字词

  -x, --line-regexp            强制<模式>仅完全匹配整行

  -z, --null-data              数据行以一个 0 字节结束,而非换行符

杂项:

  -s, --no-messages         不显示错误信息

  -v, --invert-match         选中不匹配的行

  -V, --version             显示版本信息并退出

      --help                显示此帮助并退出

输出控制:

  -m, --max-count=<次数>    得到给定<次数>次匹配后停止

  -b, --byte-offset          输出的同时打印字节偏移

  -n, --line-number         输出的同时打印行号

      --line-buffered       每行输出后刷新输出缓冲区

  -H, --with-filename       为输出行打印文件名

  -h, --no-filename         输出时不显示文件名前缀

      --label=<标签>        将给定<标签>作为标准输入文件名前缀

  -o, --only-matching       只显示行中非空匹配部分

  -q, --quiet, --silent        不显示所有常规输出

      --binary-files=TYPE    设定二进制文件的 TYPE(类型);

                            TYPE 可以是 'binary'、'text' 或 'without-match'

  -a, --text                  等同于 --binary-files=text

  -I                        等同于 --binary-files=without-match

  -d, --directories=ACTION    读取目录的方式;

                            ACTION 可以是`read', `recurse',或`skip'

  -D, --devices=ACTION      读取设备、先入先出队列、套接字的方式;

                            ACTION 可以是`read'或`skip'

  -r, --recursive               等同于--directories=recurse

  -R, --dereference-recursive       同上,但遍历所有符号链接

      --include=GLOB         search only files that match GLOB (a file pattern)

      --exclude=GLOB        skip files that match GLOB

      --exclude-from=FILE     skip files that match any file pattern from FILE

      --exclude-dir=GLOB      skip directories that match GLOB

  -L, --files-without-match     只打印没有匹配上的<文件>的名称

  -l, --files-with-matches      只打印有匹配的<文件>的名称

  -c, --count                只打印每个<文件>中的匹配行数目

  -T, --initial-tab             行首制表符对齐(如有必要)

  -Z, --null                  在<文件>名最后打印空字符

文件控制:

  -B, --before-context=NUM     打印文本及其前面NUM 行

  -A, --after-context=NUM      打印文本及其后面NUM 行

  -C, --context=NUM          打印NUM 行输出文本

  -NUM                      等同于 --context=NUM

      --color[=WHEN],

      --colour[=WHEN]       使用标记高亮匹配字串;

                            WHEN 可以是“always”、“never”或“auto”

  -U, --binary                不要清除行尾的 CR 字符(MSDOS/Windows)

若给定<文件>为“-”,则从读取标准输入。  若无<文件>参数,则除非处于

递归工作模式视为从“.”读取之外,一律视为从“-”读取。如果提供了少于

两个<文件>参数,则默认启用 -h 选项。如果有任意行(或者指定了 -L 选项

并有任意文件)被匹配,则退出状态为 0,否则为 1;如果有错误产生,且未指

定 -q 参数,则退出状态为 2。

3.sed命令

sed是一种流编辑器,它可以执行各种文本操作,如替换、删除、插入等。语法格式如下:

sed [OPTIONS] COMMAND [FILE…]

其中,OPTIONS表示选项,COMMAND表示要执行的sed命令,FILE表示要处理的文件名。

sed命令的常见动作包括:

  1.  a:新增,a的后面可以接字符串,而这些字符串会在新的一行出现(当前行的后一行)
  2.  i:插入指定字符串,i的后面可以接字符串,而这些字符串会在新的一行出现(当前行的前一行)
  3.  s:替换指定模式,通常会搭配正则表达式
  4.  c:替换指定行
  5.  d:删除指定行
  6.  y:字符串转换
  7.  p:打印匹配的行,通常会与参数sed -n一起使用

详细选项参数及其含义可以通过“sed --help”获取,具体如下:

[test@localhost ~]$ sed --help

用法: sed [选项]... {脚本(如果没有其他脚本)} [输入文件]...

  -n, --quiet, --silent

                 取消自动打印模式空间

      --debug

                 对程序运行进行标注

  -e 脚本, --expression=脚本

                 添加“脚本”到程序的运行列表

  -f 脚本文件, --file=脚本文件

                 添加“脚本文件”到程序的运行列表

  --follow-symlinks

                 直接修改文件时跟随软链接

  -i[扩展名], --in-place[=扩展名]

                 直接修改文件(如果指定扩展名则备份文件)

  -l N, --line-length=N

                 指定“l”命令的换行期望长度

  --posix

                 关闭所有 GNU 扩展

  -E, -r, --regexp-extended

                 在脚本中使用扩展正则表达式

                 (为保证可移植性使用 POSIX -E)。

  -s, --separate

                 将输入文件视为各个独立的文件而不是单个

                 长的连续输入流。

      --sandbox

                 在沙盒模式中进行操作(禁用 e/r/w 命令)。

  -u, --unbuffered

                 从输入文件读取最少的数据,更频繁的刷新输出

  -z, --null-data

                 使用 NUL 字符分隔各行

      --help     打印帮助并退出

      --version  输出版本信息并退出

如果没有 -e, --expression, -f 或 --file 选项,那么第一个非选项参数被视为

sed脚本。其他非选项参数被视为输入文件,如果没有输入文件,那么程序将从标准

输入读取数据。

4.awk命令

awk是一种文本处理工具,它可以用于格式化、过滤与计算等操作。语法格式如下:

awk [OPTIONS] 'PATTERN {ACTION} ' [FILE…]

其中,OPTIONS表示选项,PATTERN表示要匹配的模式,ACTION 表示要执行的操作,FILE表示要处理的文件名。

awk命令的常见选项包括:

  1.  print:打印指定内容
  2.  if:条件判断
  3.  for:循环结构
  4.  sum:计算指定

详细选项参数及其含义可以通过“awk --help”获取,具体如下:

[test@localhost ~]$ awk --help

Usage: awk [POSIX or GNU style options] -f progfile [--] file ...

Usage: awk [POSIX or GNU style options] [--] 'program' file ...

POSIX options:          GNU long options: (standard)

        -f progfile             --file=progfile

        -F fs                   --field-separator=fs

        -v var=val              --assign=var=val

Short options:          GNU long options: (extensions)

        -b                      --characters-as-bytes

        -c                      --traditional

        -C                      --copyright

        -d[file]                --dump-variables[=file]

        -D[file]                --debug[=file]

        -e 'program-text'       --source='program-text'

        -E file                 --exec=file

        -g                      --gen-pot

        -h                      --help

        -i includefile          --include=includefile

        -l library              --load=library

        -L[fatal|invalid|no-ext]        --lint[=fatal|invalid|no-ext]

        -M                      --bignum

        -N                      --use-lc-numeric

        -n                      --non-decimal-data

        -o[file]                --pretty-print[=file]

        -O                      --optimize

        -p[file]                --profile[=file]

        -P                      --posix

        -r                      --re-interval

        -s                      --no-optimize

        -S                      --sandbox

        -t                      --lint-old

        -V                      --version

To report bugs, see node `Bugs' in `gawk.info'

which is section `Reporting Problems and Bugs' in the

printed version.  This same information may be found at

https://www.gnu.org/software/gawk/manual/html_node/Bugs.html.

PLEASE do NOT try to report bugs by posting in comp.lang.awk,

or by using a web forum such as Stack Overflow.

gawk is a pattern scanning and processing language.

By default it reads standard input and writes standard output.

Examples:

        gawk '{ sum += $1 }; END { print sum }' file

        gawk -F: '{ print $1 }' /etc/passwd

5.使用实例

(1) grep使用实例

--在文件中搜索指定字符串

grep -i "关键字" 文件      --模糊匹配(不区分大小写)

grep -w "关键字" 文件     --完全匹配

--在文件中搜索多个字符串

grep -e "关键字1" -e "关键字2" 文件

--在文件中搜索并显示匹配的行号

grep -n "关键字" 文件

--在文件中搜索并显示不匹配的行

grep -v "关键字" 文件

--在目录中递归搜索指定字符串

grep -r "关键字" directory/

--查看文件中搜索的关键字的后n行

cat 文件 | grep -An -i "关键字"

--查看文件中搜索的关键字的前n行

cat 文件 | grep -Bn -i "关键字"

--查看文件中搜索的关键字的前后n行

cat 文件 | grep -C20 -i "关键字"

(2) sed使用实例

/* 选择文本p */

--显示文件的1-3行,不使用-n

sed 1,3p 文件名

--只显示文件的1-3行,使用-n

sed -n 1,3p 文件名

--显示包含关键字的行

sed -n '/关键字/p' 文件名

/* 替换文本s */

语法格式[位置参数1] [,位置参数2] s/匹配字符/替换字符/[标志]

标志说明:

g:全局匹配,替换文本行中所有符合规则的字符串

十进制数字n:替换第n符合规则的字符串

p:替换第一个并输出到标准输出

w:替换第一个,并输出到磁盘文件中

空:不加标志,则替换第一个

--把文件的a全部替换成A 

sed 's/a/A/g' 文件名 > 新文件名

--对指定行进行替换

sed '1,3 s/a/A/g' 文件名 > 新文件名

/* 删除文本d */

--删除文件的第一行

sed '1d' 文件名

--删除文件的最后一行

sed '$d' 文件名

--删除空白行

sed '/^$/d' 文件名

/* 追加文本a */

--在文件中root开头的行的后面插入一行test

sed '/^root/a test' 文件名

/* 插入文本i */

--在文件中root开头的行的前面插入一行test

sed '/^root/i test' 文件名

(3) awk使用实例

--打印文件中的所有行

awk '{print}' filename

--打印文件中第二列的内容

awk '{print $2}' filename

--计算文件中所有数字的总和

awk '{sum += $1} END {print sum}' filename

--打印文件中包含指定字符串的行

awk '/关键字/ {print}' filename

--在文件中指定列后面添加指定字符串

awk '{$3 = $3 "关键字"} {print}' filename

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com