第7章 Linux文件过滤及内容编辑处理

2023-11-20

第7章 Linux文件过滤及内容编辑处理

在第5章,我们讲解了Linux系统文件及目录处理的基本命令知识和应用实践,本章继续为大家讲解处理Linux系统文件内容的一些核心命令,这些命令同样十分重要。

7.1 vi/vim:纯文本编辑器

Windows下最基本的文本编辑器就是记事本,当然,还有一些功能强大的文本编辑器,例如notepad++、emeditor等,如果与Linux系统相比较,那么你会发现Windows下的记事本对应的就是Linux里的vi命令,而notepad++、emeditor这样的编辑器对应则是vim命令,因此,掌握vi/vim命令是学好Linux的重要的必修课之一,因为这两个命令是管理Linux必不可少的工具。

7.1.1 命令详解

【命令星级】  ★★★★★

【功能说明】

vi是Linux命令行界面下的重要文字编辑器。vim是vi命令的增强版,例如,高亮显示代码、自动缩进等。vim与vi编辑器是兼容的,建议读者多用vim编辑器替代vi编辑器。

【用法格式】


vim  [option]  [file]
vim  [选项]    [文件]  

【vim的三种模式】

vim分为三种模式:普通模式、编辑模式、命令模式,其作用分别如下。

(1)普通模式

用vim命令打开一个文件后,默认的状态就是普通模式。在这个模式中,不能进行编辑输入操作,但可以按“上下左右”键来移动光标,同时还可以执行一些操作命令进行如删除、复制、粘贴等工作。

(2)编辑模式

在普通模式下不能进行编辑输入操作,只有按下“i,I,o,O,a,A,r,R,s,S”(其中“i”最为常用)等字母进入编辑模式后才可以执行录入文字等编辑操作。确定文件是否处于编辑模式状态有一个重要的特征,那就是在窗口的左下角要有插入的标记“--INSERT--”或“--插入--”,如图7-1所示。

图7-1 vim编辑模式

(3)命令模式

在普通模式下,输入“:”或“/”或“?”时,光标会自动定位在那一行,在这个模式中,可以执行保存、退出、搜索、替换、显示行号等相关操作。

图7-2所示的是vim的三种模式转换示意图。

图7-2 vim的三种模式转换示意图

【选项说明】

表7-1针对vi/vim命令的参数选项进行了说明。

表7-1 vi/vim命令的参数选项及说明

7.1.2 使用范例

范例7-1:进入普通模式。


[root@oldboy ~]# vim oldboy_new.txt

输入“vim文件名”即可直接进入vim窗口。如图7-3所示,左下角会显示这个文件的当前状态。如果是新文件,则会显示[New File],如"oldboy_new.txt"[New File]。

图7-3 vim编辑新文件窗口底部

如果是已存在的文件,则会显示当前文件名、行数、字符数等,如图7-4所示。


[root@oldboy ~]# vim /etc/services

图7-4 vim编辑已有文件窗口底部

范例7-2:进入编辑模式。

在普通模式下,按下i键就可以进入编辑模式,此时可输入任意文本内容。当然还有很多字母也可以实现同样的功能,如“I,o,O,a,A,r,R,s,S”,从图7-5中可以看到,其左下角有个“--INSERT--”,表示可以编辑内容了。

图7-5 vim编辑模式窗口

范例7-3:按[Esc]键切回到普通模式。

编辑完内容后,可按[Esc]键退出编辑模式,进入普通模式,此时,细心的读者可以从图7-6中注意到窗口左下角的“--INSERT--”消失了。

图7-6 vim从编辑模式返回普通模式窗口

范例7-4:使用命令模式保存文件内容,退出vim编辑器。

切回到普通模式后,此时就可以使用命令模式保存文件内容了,如图7-7所示,输入“:wq”(保存退出)或“:wq!”(强制保存退出)后敲下回车键即可保存退出。

图7-7 vim命令模式保存文件窗口底部

7.1.3 通过vim命令打开文件的方法小结

以下列举几种通过vim命令打开文件的方法。

·vim file:打开/新建文件,光标置于第1行行首,file为任意文件名。

·vim file+n:打开文件,光标置于第n行行首,n为自然数。

·vim file+:打开文件,光标置于最后1行行首。

·vim file+/pattern:将光标置于与pattern匹配的第一个字符串处,pattern为任意字符串。

有关vi/vim的命令深入知识(含vim配置及编程开发配置)讲解,可以参考《跟老男孩学Linux运维:Shell编程实战》一书的第16章。

7.2 echo:显示输出文本内容

7.2.1 命令详解

【命令星级】  ★★★★★

【功能说明】

echo命令能将指定文本显示在Linux命令行上,或者通过重定向符写入到指定的文件中。

【语法格式】


echo  [option]  [string]
echo  [选项]    [文本] 

【选项说明】

表7-2针对echo命令的参数选项进行了说明。

表7-2 echo命令的参数选项及说明

7.2.2 使用范例

范例7-5:打印文本到屏幕输出。


[root@oldboy ~]# echo Hello world      #<==echo直接接想输出的文本。
Hello world
[root@oldboy ~]# echo 'Hello world'    #<==可以使用单引号将内容括起来。
Hello world
[root@oldboy ~]# echo "Hello world"    #<==也可以使用双引号。
Hello world
[root@oldboy ~]# echo -e "hello\tworld" #<==使用选项-e可以识别\t(一个tab)等特殊字符。
hello   world

范例7-6:将单行文本追加到某个文件中。


[root@oldboy ~]# echo "hello world" >>hello.txt  #<==使用追加重定向符号>>将文本
                                                      写入文件。
[root@oldboy ~]# cat hello.txt
hello world

范例7-7:使用-n参数的示例。


[root@oldboy ~]# echo "oldboy";echo "oldboy"      #<==分号可以连接2个命令。
oldboy                                            #<==命令执行结果分成了两行输出。
oldboy
[root@oldboy ~]# echo -n "oldboy";echo "oldboy"   #<==使用-n选项就可以不换行,
                                 输出成一行。
oldboyoldboy

范例7-8:打印彩色输出。

命令如下:


echo -e "\033[30m 黑色字oldboy trainning \033[0m"
echo -e "\033[31m 红色字oldboy trainning \033[0m"
echo -e "\033[32m 绿色字oldboy trainning \033[0m"
echo -e "\033[33m 黄色字oldboy trainning \033[0m"
echo -e "\033[34m 蓝色字oldboy trainning \033[0m"
echo -e "\033[35m 紫色字oldboy trainning \033[0m"
echo -e "\033[36m 天蓝字oldboy trainning \033[0m"
echo -e "\033[37m 白色字oldboy trainning \033[0m"

提示:上文加粗的递增数字表示字体颜色范围。

图7-8为打印效果图。

图7-8 打印彩色输出效果图

假设要打印的背景色的数字范围为40-47,命令如下:


echo -e "\033[40;37m 黑底白字 welcome to old1boy\033[0m"
echo -e "\033[41;37m 红底白字 welcome to old2boy\033[0m"
echo -e "\033[42;37m 绿底白字 welcome to old3boy\033[0m"
echo -e "\033[43;37m 黄底白字 welcome to old4boy\033[0m"
echo -e "\033[44;37m 蓝底白字 welcome to old5boy\033[0m"
echo -e "\033[45;37m 紫底白字 welcome to old6boy\033[0m"
echo -e "\033[46;37m 天蓝白字 welcome to old7boy\033[0m"
echo -e "\033[47;30m 白底黑字 welcome to old8boy\033[0m"

提示:上文加粗的递增数字表示背景颜色范围。

图7-9为打印的效果图。

图7-9 打印彩色背景色效果图

有关字体颜色内容,在《跟老男孩学Linux运维:Shell编程实战》一书的第9章有详细介绍。

范例7-9:打印变量内容。


[root@oldboy ~]# echo $PATH  #<==echo打印环境变量,在环境变量名前面使用“$”符号。
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@oldboy ~]# test=12345  
[root@oldboy ~]# echo $test
12345

提示:与echo类似的命令还有printf,这是一个功能更强的输出命令,具体请见后文。

7.3 cat:合并文件或查看文件内容

7.3.1 命令详解

【命令星级】  ★★★★★

【功能说明】

cat命令可以理解为英文单词concatenate的缩写,其功能是连接多个文件并且打印到屏幕输出,或者重定向到指定文件中。此命令常用于显示单个文件内容,或者将几个文件内容连接起来一起显示,还可以从标准输入中读取内容并显示,生产环境中,它常与重定向或追加符号配合使用。

cat命令的记忆方法:cat的中文意思是猫,可理解为“瞄”一下文件内容,那就是显示文件内容了。根据老男孩的运维经验,cat具备5大常用功能,具体请见表7-3。

表7-3 cat命令常用功能

【语法格式】


cat  [option]  [file]
cat  [选项]    [文件]

说明:在cat命令及后面的选项和文件里,每个元素之间都至少要有一个空格。

【选项说明】

表7-4针对cat命令的参数选项进行了说明。

表7-4 cat命令的参数选项及说明

7.3.2 使用示例

1.基础范例

范例7-10:执行cat的完整命令生成test.txt文件内容。

方法1:


cat >test.txt<<EOF
welcome to my blog.http://oldboy.blog.51cto.com

if you like my blog’s contents,pls support me

bye! boys and girls
EOF #<==这里要敲回车才能结束,另外,EOF必须成对出现,但也可以用别的成对标签进行替换。例如,
oldboy字符标签,默认情况下结尾的EOF必须要顶格写。


方法2:


cat >test.txt<<-EOF  #<==如果cat后面使用了“>>-”符号,则结尾的EOF可以不用顶格,
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第7章 Linux文件过滤及内容编辑处理 的相关文章

随机推荐

  • 【马士兵】Python基础--16(面向对象)

    Python基础 16 面向对象 文章目录 Python基础 16 面向对象 面向对象的三大特征 封装 继承 方法重写 object类 多态 静态语言与动态语言 面向对象的三大特征 封装 封装的实现 class Student def in
  • docker mysql utf8mb4 编码问题解决方法

    docker mysql utf8mb4 编码问题解决方法 最近在学习docker mysql写入中文报错的问题困扰了我2 3天 在搜索了相关资料后终于找到了解决方法 原因是mysql5 7及之前的默认字符集是latain 而它是不支持中文
  • uview的select组件选择问题

    官方文档羞涩难懂 直接用拖拽工具 对于常用的表单组件 可直接帮你生成相关事件 时间 单列多列等选择器等支持数据回显功能 免开发 在拖拽面板中的 formitem 表单项中 转载 uniapp页面速成提效工具 uniapp uview ui
  • Xray工具使用(一)

    xray简介 xray 是一款功能强大的安全评估工具 主要特性有 检测速度快 发包速度快 漏洞检测算法高效 支持范围广 大至 OWASP Top 10 通用漏洞检测 小至各种 CMS 框架 POC 均可以支持 代码质量高 编写代码的人员素质
  • 华为java社招面试题目及全部流程详解

    华为的招聘流程一直非常复杂 本人最近参加了华为的社招 对全部流程有一个总体了解 包括流程 面试题目类型 分享给大家 希望大家能有所帮助 首先是华为hr审核简历 看一个简历和所需职位的匹配度 基本就是看毕业学校 看掌握技能是否与所需职位吻合
  • 《论文阅读》CARE:通过条件图生成的共情回复因果关系推理 EMNLP 2022

    论文阅读 CARE 通过条件图生成的移情反应因果关系推理 前言 简介 基础知识 Transformer Variational Graph Auto Encoder 变分图自编码器 邻接矩阵 adjacency matrix 图神经网络 G
  • HDFS 文件读写流程剖析

    Write hadoop fs put czz log wc in 1 Client调用FileSystem create filePath 方法 与NN进行RPC通信 check是否存在及是否有权限创建 假如不ok 就返回错误信息 假如o
  • 【RTT驱动框架分析06】-pwn驱动框架分析+pwm驱动实现

    pwm pwm应用程序开发 访问 PWM 设备API 应用程序通过 RT Thread 提供的 PWM 设备管理接口来访问 PWM 设备硬件 相关接口如下所示 函数 描述 rt device find 根据 PWM 设备名称查找设备获取设备
  • React、Vue2.x、Vue3.0的diff算法

    前言 本文章不讲解 vDom 实现 mount 挂载 以及 render 函数 只讨论三种 diff 算法 VNode 类型不考虑 component functional component Fragment Teleport 只考虑 E
  • 算法篇--链表求和

    问题描述 给两个链表 每个链表为一个整数的倒序 如下 1 2 3 4 5 7 9 两个数字的结果 321 9754 10075 那么 请得到 链表的结果为 5 7 0 0 1 思考 思路总结 两个链表肯定有一个最长的 等于情况取哪个都行 所
  • sudo配置文件/etc/sudoers详解及实战用法

    一 sudo执行命令的流程 将当前用户切换到超级用户下 或切换到指定的用户下 然后以超级用户或其指定切换到的用户身份执行命令 执行完成后 直接退回到当前用户 具体工作过程如下 当用户执行sudo时 系统会主动寻找 etc sudoers文件
  • hudi概念

    近实时摄取 对于 RDBMS 关系型的摄入 Hudi提供了更快的 Upset 操作 例如 你可以通过 MySql binlog 的形式或者 Sqoop 导入到 hdfs上的对应的 Hudi表中 这样操作比 Sqoop 批量合并 job Sq
  • tomcat进程意外退出的问题分析

    节前某个部门的测试环境反馈tomcat会意外退出 我们到实际环境排查后发现不是jvm crash 日志里有进程销毁的记录 从pause到destory的整个过程 org apache coyote AbstractProtocol paus
  • RNA-seq——四、根据序列比对结果筛选差异基因

    目录 1 合并矩阵并进行注释 2 筛选差异基因 DESeq2 写在前面 经过前面的一系列分析 我们得到了几个counts数据 接下来就需要根据这些数据来进行分析 本文使用Rstudio 从序列比对结果中筛选出差异基因 目的是 根据不同基因的
  • 在使用服务器时,配置torch环境(这里是以tengxunyun为例子配置的环境)

    这里配置的环境是使用的bubbliiiing的代码为例子进行配置的 配置环境需要对应自己电脑的显卡以及CUDA版本 最重要是torch的安装 一定要去官网去找对应的版本 1 conda create n pytorch python 3 6
  • 【Vue3.0实战逐步深入系列】使用elementui组件库element-plus美化投票功能

    千字长文 熬夜更新 原创不易 多多支持 感谢大家 前言 小伙伴们大家好 前面一篇文章中我们利用vue3 0实现了一个超级简单的投票功能 虽然功能是实现了也达到了巩固vue3 0知识点的目的 但是页面没有添加任何样式也没有进行任何的UI设计
  • 软件工程基础知识--系统测试

    系统测试与调试 1 系统测试的意义和目的 系统测试是为了发现错误而执行程序的过程 以最少的人力和时间发现潜在的各种错误和缺陷 根据测试的概念和目的 在进行信息系统测试时应遵循以下基本原则 1 应尽早并不断地进行测试 2 测试工作应该避免由原
  • python入门之字符串

    目录 一 字符串的定义 二 字符串的常用操作 三 字符串的切片 一 字符串的定义 字符串就是一串字符 是编程语言中表示文本的数据类型 在python中可以使用一对双引号 或者一对单引号 定义一个字符串 虽然可以使用 或者 做字符串的转义 但
  • 区块链数字存证平台有哪些功能模块

    区块链数字存证平台通常包括以下功能模块 数字存证 将数字文件的哈希值存储到区块链上 确保文件的完整性和不可篡改性 时间戳 记录数字文件的创建时间和存证时间 确保存证的时效性和证据的可信度 鉴定证书 提供数字文件的鉴定证书 证明文件的真实性和
  • 第7章 Linux文件过滤及内容编辑处理

    第7章 Linux文件过滤及内容编辑处理 在第5章 我们讲解了Linux系统文件及目录处理的基本命令知识和应用实践 本章继续为大家讲解处理Linux系统文件内容的一些核心命令 这些命令同样十分重要 7 1 vi vim 纯文本编辑器 Win