Linux 文本文件编辑相关命令简介【Linux 常用命令系列二】
〇、前言
本文介绍了如何通过 vim 命令,对文本文件进行打开、编辑、保存等相关操作,并通过简单的示例演示了常用用法。
一、关于文本文件的操作
1.1 打开,查看(cat)、编辑(vim)
打开文本文件,有查看和编辑两种状态。
1.1.1 仅查看 cat
可以使用 cat 命令,加上文件的绝对路径或者进入目标路径加上文件名,如下示例:
// 例如要查看此文件:/etc/test/system.config
cat /etc/test/system.config
// 或者
cd /etc/test
cat system.config
1.1.2 编辑 vim
使用 vim 命令,同样是加上绝对路径或进入目标路径加上文件名,如下示例:
// 例如要编辑此文件:/etc/test/system.config
vim /etc/test/system.config
// 或者
cd /etc/test
vim system.config
另外还有个 vi 命令,它实际上是 vim 的前身,vim 全部包含了 vi 的功能,并进行了许多扩展和改进,因此更推荐使用 vim。
另外,为了便于操作并增加可读性,可以添加行号。
// 在通过 vim 打开文件之后,执行如下命令:
// 【临时显示行号】两个命令均可:
:set nu
:set number
// 【临时隐藏行号】两个命令均可:
:set nonu // no + nu
:set nonumber // no + number
// 【永久显示行号】需要在配置文件中修改,加上默认的命令
// 1)通过 find 命令,查找 vimrc 配置文件的路径
find / -name vimrc // 结果:/etc/vimrc
// 2)编辑配置文件
vim /etc/vimrc
// 在文件最后新增行加入命令:
set nu
// 最后用命令【:wq】保存并退出即可
1.1.3 文件内容翻页
命令 | 简介 |
Ctrl+u | 向文件首翻半屏 |
Ctrl+d | 向文件尾翻半屏 |
Ctrl+b | 向文件首翻一屏 |
Ctrl+f | 向文件尾翻一屏 |
z | 将当前行翻滚到屏幕顶部 |
nz | 将本文件第 n 行翻滚到屏幕顶部 |
1.2 编辑文本内容
1.2.1 插入文本内容
通过 vim 命令打开文件后,实际上是无法编辑的,还要通过命令来进入编辑状态。
这个命令很简单,就是一个英文字母,如下六个类型:
a | 在当前光标选中的字符,之后插入字符 |
A | 在当前光标所在行的行尾插入字符,行尾包含空格 |
i | 在当前光标选中的字符,之前插入字符 |
I | 在当前光标所在行的行首插入字符,行首不包含空格 |
o | 在当前光标所在行的下方插入一个空行,并在空行中输入字符 |
O | 在当前光标所在行的上方插入一个空行,并在空行中输入字符 |
1.2.2 查找
文本内容查找,可以有两种方式,通过“/”、grep 命令。
1)通过“/”加要查询字符串,需要在文件中查找
下面例举几个示例:
语法 | 简介 | 示例(abc 代表普通字符串) |
/+字符串 | 简单的匹配字符串 | /abc |
/^+字符串 | 开头为指定字符串 | /^abc |
/字符串+$ | 结尾为指定字符串 | /abc$ |
?+字符串 | 简单查询,当前位置开始往前查找,锁定第一个 | ?abc |
快捷键:
n:往上查找;
N:往下查找。
2)通过 grep 命令在不打开文件的情况下查找文本内容
grep 的名称来源于“global regular expression print”,意为全局正则表达式打印。
// 基本语法:
grep [选项] '模式' 文件名
// [选项]:是可选的,用于定制grep的行为
// '模式':是要搜索的字符串或正则表达式
// 文件名:是要搜索的文件名或目录名
常用的选项:
选项 | 简介 |
-i | 忽略大小写 |
-v | 反向匹配,选择不匹配的行 |
-r 或 -R | 递归搜索,在当前目录及子目录中的文件搜索 |
-l | 只输出包含匹配行的文件名 |
-n | 显示匹配行及其行号 |
-c | 只输出匹配的行数 |
-o | 只输出匹配的部分 |
-A num | 显示匹配行之后的 num 行 |
-B num | 显示匹配行之前的 num 行 |
-C num 或 --context=num | 显示匹配行前后各 num 行 |
-e | 指定多个模式 |
-f | 从文件中获取模式 |
--color 或 --colour | 高亮显示匹配部分 |
几个简单的示例:
// 简单查找
// 在 text2.txt 中查找包含 345 字符串的所有行
grep '345' /etc/test/text2.txt
// 反向匹配,即不包含目标字符串的行
// 在 text2.txt 中查找不包含 345 字符串的所有行
grep -v '345' /etc/test/text2.txt
// 反向匹配,即不包含目标字符串的行
// 在 text2.txt 中查找以 4~5 结尾的所有行
grep '[4-5]$' /etc/test/text2.txt
选线组合使用:(递归搜索的同时,只返回文件名)
// 列出 /path/to/directory 目录及其子目录中,所有包含 pattern 的文件名
grep -rl 'pattern' /path/to/directory/
grep 参考:https://www.cnblogs.com/huangjiabobk/p/18106391
1.2.3 替换
一般模式
从查看状态进入替换模式,有如下几个快捷键:
r:仅替换当前选退出编辑状态;
R:连续替换后续光标选中的字符串,直至单击 Esc 键退出编辑;
cc:清空当前行,然后自动进入 insert 模式,可直接输入字符串;
cw:删除从光标位置开始往后的单词,即至下一个空格为止或遇到标点符号为止;
~:切换光标选中字符的大小写
命令模式
命令 | 简介 |
:s/str_old/str_new/gi | 仅当前行中,用 string_new 替换掉 string_old,最后的配置 i 标识不区分大小写 |
:row_start,row_ends/str_old/str_new/gi 注:row_end 后边有个额外的字母 s |
根据行号扩大范围,从 row_start 行到 row_end 行,用 string_new 替换掉 string_old |
:g/str_old/str_new/gi | 当前文件中全文搜索,用 string_new 替换掉 string_old |
注:可再打开文件后,临时通过【:set nu】显示行号。
示例:【:3,4s/345/666/g】如下图,替换前后:
1.2.4 删除(剪切)
删除实际上是的效果就是剪切,通过快捷键【p】粘贴到光标之后。
命令 | 简介 |
x | 删除光标选中的一个字符 |
X | 删除光标选中位置前的一个字符 |
dd | 删除光标所在的行,光标回到上一行的开始 |
ndd | 从光标所在行开始,往后删除 n 行 |
dG | 删除从光标所在行开始,往后知道文件结尾的全部行 |
dnG | 删除从光标所在行开始,到文件中第 n 行的全部行 |
D | 删除当前行中,光标位置之后的全部字符 |
:num_start,num_endd | 删除从 num_start 到 num_end 之间的全部行 |
示例:
文件查看状态输入【2dd】,从光标所在行开始,往后删除 2 行:
文件查看状态输入【:9,10d】,按行号删除第 9 到 10 行:
1.2.5 复制和粘贴
命令 | 简介 |
yy | 复制当前行至剪切板 |
nyy | 从当前行开始,复制 n 行至剪切板 |
yw | 复制从光标位置开始的一个单词,即至下一个空格或标点符号为止的字符串 |
p | 粘贴,将剪切板中的内容,粘贴到光标位置之后 |
P | 粘贴,将剪切板中的内容,粘贴到光标位置之前 |
示例:
文件查看状态下,输入【2yy】复制当前行开始往后两行,再输入命令【P】,粘贴到光标位置之前,前后结果如下图:
1.2.6 撤销和恢复
文件查看状态下,如下快捷键:
u:撤销上一步编辑操作;
Ctrl+r:恢复上一步撤销操作。
1.3 保存和退出
命令 | 简介 |
:wq | 保存并退出 |
:wq! | 保存并强制退出 |
:q | 不保存退出 |
:q! | 不保存强制退出 |
:w | 保存,不退出 |
:w! | 强制保存,不退出 |
:w filename | 另存为,filename 为新的文件名 |
x! | 保存并退出 |
ZZ | 直接退出 |
参考: https://blog.csdn.net/qinfuan2017/article/details/79728906 https://blog.csdn.net/qq_29689343/article/details/116162089
Linux 文本文件编辑相关命令简介【Linux 常用命令系列二】的更多相关文章
- linux基础学习之软件安装以及常用命令
linux基础学习之软件安装以及常用命令 调用中央仓库: yum install wget 然后下载nodejs: wget https://nodejs.org/dist/v10.14.2/node ...
- Linux学习笔记(一):常用命令(1)
经过统计Linux中能够识别的命令超过3000种,当然常用的命令就远远没有这么多了,按照我的习惯,我把已经学过的Linux常用命令做了以下几个方面的分割: 1.文件处理命令 2.文件搜索命令 3.帮助 ...
- Linux学习笔记(一):常用命令
经过统计Linux中能够识别的命令超过3000种,当然常用的命令就远远没有这么多了,按照我的习惯,我把已经学过的Linux常用命令做了以下几个方面的分割: 1.文件处理命令 2.文件搜索命令 3.帮助 ...
- Linux 创建/编辑/查看 文件/文件夹的命令汇总
Linux 创建/编辑/查看 文件/文件夹的命令汇总 Linux 创建文件的命令Linux,编辑文件的命令Linux 查看文件的命令,touch,vim,vi,gedit,cat,ls -a, ls ...
- 封装:Cmd命令调用和常用命令
原文:封装:Cmd命令调用和常用命令 一.Cmd命令调用方法 1.静态方法调用 class Program { static void Main(string[] args) { // Todo :打 ...
- 新手必学linux文本文件编辑命令 vi vim.....
作为一名Linux新手小白,今天就和大家简单地了解一下Linux的Vim文本编辑器的使用. Vim文本编辑器 vim编辑器的三大模式——命令模式.编辑模式和末行模式 命令 ...
- Linux文件系统简介及常用命令
在linux系统中一切皆是文件,下面简要总结了一下linux文件系统中分区类型.文件系统类型以及常用命令. 一.分区类型1.主分区:最多只能有四个2.扩展分区:只能有一个,也可以看做是主分区的一种.即 ...
- linux常用命令与系统管理常用命令
linux命令:切换用户:开启ftp服务:service vsftpd start 开启ssh服务:service sshd start普通用户切换到超级用户:su rootlogout:(注销)un ...
- 【Linux 操作系统】vim编辑器配置及常用命令
最近工作不安分, 没有了刚入行时候的锐气, 不知道什么时候开始懈怠起来, 周末在电脑旁边看新闻, 搞笑图片, 追美剧, 一坐就是一天, 很是空虚. 我需要摆脱这种状态, 正好想学习一下安卓底层, An ...
- [工作需求]linux常用命令以及vim常用命令
一. Linux 常用命令 mkdir dirname新建文件夹 cd ~ 进入自己的家目录 cd dirname 进入名字为dirname的目录: l 显示当前文件夹下的文件 ...
随机推荐
- Swoole 源码分析之 Http Server 模块
首发原文链接:Swoole 源码分析之 Http Server 模块 Swoole 源码分析之 Http Server 模块 Http 模块的注册初始化 这次我们分析的就是 Swoole 官网的这段代 ...
- 【BI 可视化插件】怎么做? 手把手教你实现
背景 对于现在的用户来说,插件已经成为一个熟悉的概念.无论是在使用软件. IDE 还是浏览器时,插件都是为了在原有产品基础上提供更多更便利的操作.在 BI 领域,图表的丰富性和对接各种场景的自定义是最 ...
- minio-搭建个人云存储服务
相信风靡全球的亚马逊 AWS S3 的存储云服务大家已经耳熟能详了,如何自己搭建一个私有的S3存储云服务呢?Minio 提供对象存储服务,兼容了 AWS S3 存储协议,用于非结构化的数据存.非结构化 ...
- iNeuOS工业互联网操作系统,增加电力IEC104协议
1. 概述... 2 2. 配置IEC104协议设备驱动... 2 1. 概述 IEC60870-5-104 是一种电力自动化系统中常用的通信协议,使用 TCP/IP 协议作为 ...
- Particles.js:为Web项目增添动态粒子效果
Particles.js:为Web项目增添动态粒子效果 示例 介绍 Particles.js是一个轻量级的JavaScript库,用于在Web页面上创建和管理动态粒子效果.它允许开发者通过简单的配置文 ...
- C语言常用数学函数
目录 C语言常用数学函数(头文件#include "math.h") abs()函数 labs()函数 fabs()函数 floor()函数 floorf() floorl() c ...
- [Qt开发]当我们在开发兼容高分辨率和高缩放比、高DPI屏幕的软件时,我们在谈论什么。
前言 最近在开发有关高分辨率屏幕的软件,还是做了不少尝试的,当然我们也去网上查了不少资料,但是网上的资料也很零碎,说不明白,这样的话我就做个简单的总结,希望看到这的你可以一次解决你有关不同分辨率下的所 ...
- Linux扩展篇-shell编程(十)-shell范式
shell编程提供一个范式,有利于统一程序风格,增加可读性. 范式: ASSIGN SHELL/指定壳 DESCRIPTION/程序说明 BODY/程序体 扩展: 1.ASSIGN SHELL/指定壳 ...
- 三维API sheder 基础
这个shader 是靠三维数学 影响 二维像素 导致像素颜色改变 它是每个像素走一遍脚本算法 写的时候注意 语言格式 写错了 shader脚本是不能用的,根本就不好使这个 可以用区域 用xyz y为0 ...
- Kubernetes监控手册02-宿主监控概述
咱们这个系列是讲解 Kubernetes 监控,Kubernetes 自身也是要跑在机器上的,那机器的监控自然也是整个体系的一环.机器层面的监控分为两部分,带内网络和带外网络,通过带内网络做监控主要是 ...