文本编辑器与正则表达式

ops/2024/12/15 22:26:49/

1. VIM 编辑器

1.1 VIM 基本概念

VIM 是一个高度可定制的文本编辑器,广泛用于程序员的日常开发中。与传统的文本编辑器不同,VIM 基于模式操作,具有以下几个主要特点:

  • 普通模式:用于浏览和修改文本。
  • 插入模式:用于输入文本。
  • 命令模式:用于执行命令。

1.2 常用 VIM 快捷键

切换模式
  • 插入模式:按 i 进入插入模式,按 Esc 返回普通模式。
  • 命令模式:按 : 进入命令模式。
编辑操作
  • 删除d + 操作(如 dd 删除一行,d$ 删除光标后所有字符)
  • 复制y + 操作(如 yy 复制一行,y$ 复制光标后的字符)
  • 粘贴pPp 粘贴到光标后,P 粘贴到光标前)
  • 撤销u 撤销,Ctrl + r 重做
移动光标
  • 上下左右移动k 上,j 下,h 左,l
  • 跳到行首/行尾0 跳到行首,$ 跳到行尾
  • 跳到文件顶部/底部gg 跳到文件开头,G 跳到文件结尾

1.3 配置与自定义

VIM 配置文件为 .vimrc,可以通过修改该文件来定制 VIM 的行为,例如:

  • 设置自动缩进:set smartindent
  • 设置行号显示:set number

常用插件:

  • NERDTree:文件浏览器
  • ctrlp.vim:快速文件搜索

2. 文本处理工具

2.1 grep 命令

grep 是一个强大的文本搜索工具,用于从文件中查找符合条件的文本。

基本用法
grep 'pattern' filename
  • -i:忽略大小写
  • -r:递归查找目录中的文件
  • -v:反转匹配,即显示不包含指定模式的行
示例:
grep -r 'error' /var/log/

查找 /var/log/ 目录下包含 error 的日志文件。

2.2 cut 命令

cut 用于按列提取文本。

基本用法
cut -d ' ' -f 1 filename
  • -d:指定字段分隔符
  • -f:指定要提取的字段
示例:
cut -d ',' -f 1,3 filename.csv

提取 CSV 文件中第 1 列和第 3 列的数据。

2.3 sort 命令

sort 用于对文本行进行排序。

基本用法
sort filename

常用选项:

  • -n:按数字大小排序
  • -r:倒序排列
  • -u:去除重复行
示例:
sort -n data.txt

按数字大小排序 data.txt 文件中的内容。

3. 正则表达式

3.1 基本正则表达式(BRE)与扩展正则表达式(ERE)

  • 基本正则表达式(BRE):采用标准字符匹配。
  • 扩展正则表达式(ERE):包含更多的元字符和扩展功能,如 +? 等。

3.2 常用正则表达式模式

匹配任意字符
  • .:匹配任意字符(除换行符外)
字符类
  • [a-z]:匹配小写字母
  • \d:匹配数字
  • \w:匹配字母、数字或下划线
量词
  • *:匹配 0 次或多次
  • +:匹配 1 次或多次
  • ?:匹配 0 次或 1 次
  • {n,m}:匹配 n 到 m 次
示例:

匹配以 log 开头并且后面跟随任意字符的字符串:

^log.*

3.3 常见场景与技巧

查找以特定字符结尾的行
grep 'pattern$' filename
查找以特定字符开头的行
grep '^pattern' filename

4. 文件查看与操作工具

4.1 cat 命令

cat 用于查看文件内容,合并多个文件,或者将内容输出到标准输出。

示例:
cat file.txt

输出 file.txt 的内容。

4.2 nl 命令

nl 命令会在输出的文本中为每一行添加行号。

示例:
nl file.txt

4.3 diff 命令

diff 用于比较两个文件的差异。

示例:
diff file1.txt file2.txt

输出 file1.txtfile2.txt 之间的不同之处。

5. 常见命令组合使用案例

5.1 分析日志文件

假设你需要从大量的日志文件中提取特定时间段内的错误信息,并统计每种错误的出现频率。

例子:提取过去 24 小时的错误信息,并统计错误类型出现频率
grep 'ERROR' /var/log/syslog | grep "$(date --date='24 hours ago' '+%b %d')" | awk '{print $5}' | sort | uniq -c | sort -nr

步骤解析:

  1. grep 'ERROR' /var/log/syslog:从 /var/log/syslog 日志文件中提取所有包含 “ERROR” 的行。
  2. grep "$(date --date='24 hours ago' '+%b %d')":通过 date 命令获取过去 24 小时的日期,过滤出这些日期的日志行。
  3. awk '{print $5}':使用 awk 提取日志中的错误类型(假设错误类型在第 5 列)。
  4. sort:对提取的错误类型按字母排序。
  5. uniq -c:对排序后的错误类型进行去重并统计出现频率。
  6. sort -nr:按频率倒序排列错误类型,显示最常见的错误类型。

5.2 批量重命名文件

在生产环境中,尤其是文件管理系统中,常常需要对一批文件进行批量重命名。假设你有一组文件,文件名包含了日期(如 report_20230101.txt),你需要将它们的日期部分统一修改。

例子:批量修改文件名中的日期格式
for file in report_*.txt; do mv "$file" "$(echo $file | sed 's/2023/2024/')"; done

步骤解析:

  1. for file in report_*.txt:遍历当前目录下所有以 report_ 开头、.txt 结尾的文件。
  2. mv "$file" "$(echo $file | sed 's/2023/2024/')":使用 sed 替换文件名中的 20232024,然后执行 mv 命令重命名文件。

5.3 备份与压缩文件

假设你需要定期备份一个目录中的文件,并压缩成 .tar.gz 格式,保留一个完整备份和多个增量备份。

例子:备份并压缩文件
tar -czf /backup/full_backup_$(date +\%F).tar.gz /data

步骤解析:

  1. tar -czf /backup/full_backup_$(date +\%F).tar.gz:使用 tar 命令创建 .tar.gz 格式的压缩包,并通过 $(date +\%F) 生成以当前日期为文件名的压缩文件。
  2. /data:指定需要备份的目录。

如果是增量备份,可以使用 --listed-incremental 选项来创建增量备份。


http://www.ppmy.cn/ops/142223.html

相关文章

ogg基本架构原理

OGG的基本概念 1.OGG简介 Oracle GoldenGate软件是一种基于日志的结构化数据复制软件。GoldenGate 能够实现大量交易数据的实时捕捉、变换和投递,实现源数据库与目标数据库的数据同步,保持亚秒级的数据延迟。可简称为OGG。文档路径:https:/…

单元测试,集成测试,系统测试的区别是什么?

实际的测试工作当中,我们会从不同的角度对软件测试的活动进行分类,题主说的“单元测试,集成测试,系统测试”,是按照开发阶段进行测试活动的划分。这种划分完整的分类,其实是分为四种 “单元测试&#xff0c…

代码随想录第43天

300.最长递增子序列 # Dynamic programming. class Solution:def lengthOfLIS(self, nums: List[int]) -> int:if not nums: return 0dp [1] * len(nums)for i in range(len(nums)):for j in range(i):if nums[j] < nums[i]: # 如果要求非严格递增&#xff0c;将此行 …

基于PLC的工业搬运机器人设计

摘要 随着科技的不断发展&#xff0c;自动化技术的智能化越来越能体现出在工业生产当中的重要性&#xff0c;提高了我们的生产效率。自动化控制的设备可以代替人工进行全天候不间断工作&#xff0c;很大程度上解放了劳动力降低了人工成本。机器人一直以来都是科技发展前沿自动…

【5】数据分析基础(series2)

前面&#xff0c;我们了解了Series这种数据结构&#xff0c;学习了如何创建一个Series。 接下来&#xff0c;我们学习访问Series的数据的两种方式&#xff1a; 1. 位置索引访问 2. 索引标签访问 访问Series的数据 1. 位置索引访问 这种访问方式和列表相同&#xff0c;是基于…

jvm结构介绍

Java虚拟机&#xff08;JVM&#xff09;是Java平台的核心组件&#xff0c;它负责将Java字节码转换为机器码 1. 类加载子系统&#xff08;Class Loading Subsystem&#xff09;&#xff1a; • 负责将Java类加载到JVM中。这包括从文件系统、网络或其他来源读取.class文件&#x…

六、nginx负载均衡

负载均衡&#xff1a;将四层或者七层的请求分配到多台后端的服务器上。 从而分担整个业务的负载。提高系统的稳定性&#xff0c;也可以提高高可用&#xff08;备灾&#xff0c;其中一台后端服务器如果发生故障不影响整体业务&#xff09;. 负载均衡的算法 round robin 轮询 r…

IDEA关闭注释折叠

参考&#xff1a;IDEA关闭注释折叠(注释doc的rendered view模式)_idea toggle rendered view-CSDN博客