【Linux】指令入门之文本查看(三)

简介: 在 linux 处理文本时要用到工具,执行命令和结果很多时候也是文本方式,处理文本三剑客:grep sed awk。我们常说linux系统中一切皆文件,对服务配置也都是需要编辑相应的配置文件的。对于我们来说,先查看这些配置文件才是重点。在linux中查看文本文件最常见的命令包括cat、tail、more和head。

一、文本查看命令

在 linux 处理文本时要用到工具,执行命令和结果很多时候也是文本方式,处理文本三剑客:grep sed awk


1 grep命令

grep查看命令,我们可以从--help获取操作文档。


grep --help


usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]]

[-e pattern] [-f file] [--binary-files=value] [--color=when]

[--context[=num]] [--directories=action] [--label] [--line-buffered]

[--null] [pattern] [file ...]


例如我想查看package-lock.json文件倒数50行内有关键字version的,只显示上本行和上一行,那么我可以执行组合命令:

tail -50 package-lock.json | grep -C 1 "version"

Aion.Liu $ tail-50 package-lock.json | grep-C1"version""version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
--"is-fullwidth-code-point": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
--"string-width": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
--"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
--"yargs-parser": {
"version": "13.1.2",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
--"camelcase": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",


2 sed命令

sed查看命令,我们可以从--help获取操作文档。


sed --help


「MacOS」

sed: illegal option -- -

usage: sed script [-Ealnru] [-i extension] [file ...]

sed [-Ealnu] [-i extension] [-e script] ... [-f script_file] ... [file ...]


「CentOS(Linux)」

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


 -n, --quiet, --silent

                取消自动打印模式空间

 -e 脚本, --expression=脚本

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

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

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

 --follow-symlinks

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

 -i[SUFFIX], --in-place[=SUFFIX]

                edit files in place (makes backup if SUFFIX supplied)

 -c, --copy

                use copy instead of rename when shuffling files in -i mode

 -b, --binary

                does nothing; for compatibility with WIN32/CYGWIN/MSDOS/EMX (

                open files in binary mode (CR+LFs are not treated specially))

 -l N, --line-length=N

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

 --posix

                关闭所有 GNU 扩展

 -r, --regexp-extended

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

 -s, --separate

                将输入文件视为各个独立的文件而不是一个长的连续输入

 -u, --unbuffered

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

 -z, --null-data

                separate lines by NUL characters

 --help

                display this help and exit

 --version

                output version information and exit


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

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

输入读取数据。

GNU sed home page: <http://www.gnu.org/software/sed/>.

General help using GNU software: <http://www.gnu.org/gethelp/>.

E-mail bug reports to: <bug-sed@gnu.org>.

Be sure to include the word ``sed'' somewhere in the ``Subject:'' field.


例如,我创建一个文件test.txt,然后写入1234到文件中。

使用命令 sed '1aHello' test.txtHello追加到文件中的第一行后面。如果我们没有使用保存模式,那么这个只是预览,再次查看就是没有被写入。

[root@Aion test]# touch test.txt[root@Aion test]# cat test.txt[root@Aion test]#[root@Aion test]# echo "1234" >> test.txt[root@Aion test]# cat test.txt1234[root@Aion test]#[root@Aion test]#[root@Aion test]# sed '1aHello' test.txt1234Hello


3 awk命令

awk查看命令,我们可以从--help获取操作文档。


「MacOS环境下」

awk --help


awk: unknown option --help ignored

awk: no program given


「CentOS(Linux)」

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]

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

-E file   --exec=file

-g   --gen-pot

-h   --help

-L [fatal]  --lint[=fatal]

-n   --non-decimal-data

-N   --use-lc-numeric

-O   --optimize

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

-P   --posix

-r   --re-interval

-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.


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


3 正则表达式

通配文件内容 相当于扩展通配符,比通配符功能强大,通用,是课程重点

Glob 通配符:通配文件名中的字符,匹配它

通配符有星号*

问号?

中括号[ ]

[wang]这四个字符中的一个字符代表着w a n g的某一个字符

某一个数字:[0-9]

[ [ : d i g i t : ] ] digit 表示数字,两个中号括起来表示某一个数字 lower: 小写字母

uper: 大写字母

alpha: 字母

alnum: 字母加数字  空格 space


4 扩展正则表达式

写法更方便,正则表达式一种


5 vim

文本处理的强大工具,作用相当 nanu

相关文章
|
21天前
|
Linux 开发工具
linux文本管理命令
本文档介绍了Linux系统中常用的文本处理命令,包括`echo`、`cat`、`head`、`tail`、`wc`、`less`、`grep`以及重定向符号的使用方法和练习题。此外,还详细讲解了VIM编辑器的特点、工作模式、常用快捷键和高级技巧,帮助用户高效地进行文本编辑和处理。
34 4
|
21天前
|
Unix Linux Shell
linux入门!
本文档介绍了Linux系统入门的基础知识,包括操作系统概述、CentOS系统的安装与远程连接、文件操作、目录结构、用户和用户组管理、权限管理、Shell基础、输入输出、压缩打包、文件传输、软件安装、文件查找、进程管理、定时任务和服务管理等内容。重点讲解了常见的命令和操作技巧,帮助初学者快速掌握Linux系统的基本使用方法。
55 3
|
1月前
|
Linux Windows
【Linux】-基本指令(下)
【Linux】-基本指令(下)
【Linux】-基本指令(下)
|
1月前
|
Linux
【Linux第一弹】- 基本指令
【Linux第一弹】- 基本指令
34 1
|
1月前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(三):Linux下操作指令大全
Ubuntu学习笔记,介绍了Linux操作系统中常用的命令和操作,如文件管理、系统信息查看、软件安装等。
47 3
|
1月前
|
Unix Linux 索引
【Linux】-基本指令(上)
【Linux】-基本指令(上)
|
1月前
|
存储 数据可视化 Linux
Linux 基础入门
Linux 基础入门
|
6月前
|
监控 网络协议 Java
Linux 网络编程从入门到进阶 学习指南
在上一篇文章中,我们探讨了 Linux 系统编程的诸多基础构件,包括文件操作、进程管理和线程同步等,接下来,我们将视野扩展到网络世界。在这个新篇章里,我们要让应用跳出单机限制,学会在网络上跨机器交流信息。
Linux 网络编程从入门到进阶 学习指南
|
存储 Linux C语言
Linux:入门学习知识及常见指令
Linux:入门学习知识及常见指令
|
6月前
|
存储 消息中间件 网络协议
Linux 系统编程从入门到进阶 学习指南
本文旨在为初学者提供一个清晰的 Linux 系统编程入门指南,带你步入 Linux 系统编程的世界,从基本概念到实用技能,一步步建立起您的知识体系。
Linux 系统编程从入门到进阶 学习指南
下一篇
无影云桌面