前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >运维分享|Linux指令入门之文本查看(三)

运维分享|Linux指令入门之文本查看(三)

原创
作者头像
六月暴雪飞梨花
发布2023-11-27 19:25:06
发布2023-11-27 19:25:06
19800
代码可运行
举报
运行总次数:0
代码可运行

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

一、文本查看命令

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

1 grep命令

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

代码语言:javascript
代码运行次数:0
复制
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"

代码语言:javascript
代码运行次数:0
复制
Aion.Liu $ tail -50 package-lock.json | grep -C 1 "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获取操作文档。

代码语言:javascript
代码运行次数:0
复制
sed --help

「MacOS」

代码语言:javascript
代码运行次数:0
复制
sed: illegal option -- -
usage: sed script [-Ealnru] [-i extension] [file ...]
	sed [-Ealnu] [-i extension] [-e script] ... [-f script_file] ... [file ...]

「CentOS(Linux)」

代码语言:javascript
代码运行次数:0
复制
用法: 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.txt将Hello追加到文件中的第一行后面。如果我们没有使用保存模式,那么这个只是预览,再次查看就是没有被写入。

代码语言:javascript
代码运行次数:0
复制
[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.txt
1234
[root@Aion test]#
[root@Aion test]#
[root@Aion test]# sed '1aHello' test.txt
1234
Hello

3 awk命令

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

「MacOS环境下」

代码语言:javascript
代码运行次数:0
复制
awk --help
awk: unknown option --help ignored
awk: no program given

「CentOS(Linux)」

代码语言:javascript
代码运行次数:0
复制
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

总结

笔记属于个人的喜好,但是形成了自我的风格就是博文了。希望在记录自己博文道路越走越远。


我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、文本查看命令
    • 1 grep命令
    • 2 sed命令
    • 3 awk命令
    • 3 正则表达式
    • 4 扩展正则表达式
    • 5 vim
    • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档