### 文本处理工具和正则表达式 #### 1. 文本编辑工具之神VIM ##### 1.1 vi和vim简介 - **vi** (Visual Editor): 是一款非常强大的文本编辑器,在几乎所有的类Unix系统上都可以找到。它的设计理念是通过简单的键盘命令来完成文本编辑任务。 - **vim** (Vi Improved): vim 是 vi 的增强版,它不仅包含了 vi 的所有功能,还添加了许多额外的功能,如彩色语法高亮、图形用户界面支持、鼠标支持、脚本语言支持等。 ##### 1.2 使用vim初步 - **vim命令格式**: - `+#`: 打开文件后,将光标置于第#行的行首,默认情况下位于行尾。 - `+/PATTERN`: 将光标置于第一个被`PATTERN`匹配到的行的行首。 - `-bfile`: 以二进制方式打开文件。 - `-dfile1 file2 ...`: 比较多个文件,等同于`vimdiff`。 - `-mfile`: 只读方式打开文件。 - `-efile`: 直接进入`ex`模式,等同于执行`ex file`。 - **三种主要模式**: - **命令或普通模式**: 默认模式,用于移动光标、剪切/粘贴文本等。 - **插入模式**: 用于输入和修改文本。 - **扩展命令模式**: 用于执行保存、退出等操作。 - **模式转换**: - 从命令模式切换到插入模式: - `i`: 在当前位置插入文本。 - `I`: 在当前行首插入文本。 - `a`: 在当前位置之后插入文本。 - `A`: 在当前行末插入文本。 - `o`: 在当前行下一行新开一行插入文本。 - `O`: 在当前行上一行新开一行插入文本。 - 从插入模式返回命令模式: - 按`Esc`键。 - 进入扩展命令模式: - 按`:`, `/`, 或者 `?` 键。 ##### 1.3 扩展命令模式 - **基本命令**: - `:w`: 保存文件。 - `:q`: 退出vim。 - `:q!`: 不保存并退出vim。 - `:wq`: 保存并退出vim。 - `:w [filename]`: 保存文件到指定文件名。 - `:e [filename]`: 编辑另一个文件。 - `:set nu`: 显示行号。 - `:set nonu`: 关闭行号显示。 - **地址定界**: - `:1,$s/pattern/replacement/g`: 在整个文件中查找并替换。 - `:.,+3s/pattern/replacement/g`: 在当前行及其后的3行中查找并替换。 - **查找并替换**: - `/pattern`: 查找`pattern`。 - `n`: 查找下一个匹配项。 - `N`: 查找上一个匹配项。 - `:1,$s/pattern/replacement/g`: 全局替换。 - **定制vim的工作特性**: - **行号**: - `:set nu`: 显示行号。 - `:set nonu`: 关闭行号显示。 - **忽略字符的大小写**: - `:set ic`: 忽略大小写。 - **自动缩进**: - `:set autoindent`: 开启自动缩进。 - **复制保留格式**: - `:set paste`: 启用粘贴模式。 - **显示Tab和换行符^I和$显示**: - `:set listchars=tab:^I,eol:$`: 显示特殊字符。 - **高亮搜索**: - `:set hlsearch`: 高亮搜索结果。 - **语法高亮**: - `:syntax on`: 启用语法高亮。 - **文件格式**: - `:set fileformat=<format>`: 设置文件格式为`dos`、`unix`或`mac`。 - **设置文本宽度**: - `:set textwidth=<width>`: 设置文本宽度。 - **设置光标所在行的标识线**: - `:set cursorline`: 显示光标所在行。 - **加密**: - `:set cryptfile`: 加密文件。 ##### 1.4 命令模式 - **退出VIM**: - `:q`: 退出vim。 - `:q!`: 强制退出不保存。 - `:wq`: 保存并退出。 - **光标跳转**: - `gg`: 移动到文件开头。 - `G`: 移动到文件结尾。 - `nG`: 移动到第n行。 - **字符编辑**: - `x`: 删除光标下的字符。 - `X`: 删除光标前的字符。 - `dw`: 删除至单词结尾。 - `db`: 删除至单词开头。 - **替换命令(replace)**: - `r`: 替换光标下的字符。 - `R`: 连续替换字符直到按下`Esc`键。 - **删除命令(delete)**: - `dd`: 删除当前行。 - `d$`: 删除到行尾。 - `d0`: 删除到行首。 - **复制命令(yank)**: - `yy`: 复制当前行。 - `yw`: 复制单词。 - `y0`: 复制到行首。 - **粘贴命令(paste)**: - `p`: 在光标后粘贴。 - `P`: 在光标前粘贴。 - **改变命令(change)**: - `c$`: 改变至行尾。 - `cw`: 改变单词。 - `c0`: 改变到行首。 - **查找**: - `/pattern`: 查找`pattern`。 - `n`: 查找下一个匹配项。 - **撤消更改**: - `u`: 撤销最后一次更改。 - `Ctrl + r`: 重做最后一次撤销的操作。 - **高级用法**: - `.`: 重复最后一次更改命令。 - `@`: 执行宏命令。 ##### 1.5 可视化模式 - `v`: 进入可视模式选择文本。 - `V`: 进入可视行模式选择文本。 - `Shift+v`: 进入可视块模式选择文本。 ##### 1.6 多文件模式 - `:tabnew filename`: 新建一个标签页。 - `:bnext`: 切换到下一个缓冲区。 - `:bprev`: 切换到上一个缓冲区。 - `:bdel`: 删除当前缓冲区。 ##### 1.7 多窗口模式 - `:split filename`: 分割窗口。 - `:vsplite filename`: 垂直分割窗口。 - `<C-w>h`: 移动到左边窗口。 - `<C-w>j`: 移动到下面窗口。 - `<C-w>k`: 移动到上面窗口。 - `<C-w>l`: 移动到右边窗口。 - `<C-w>=`: 平均分配窗口大小。 ##### 1.8 vim的寄存器 - `":reg"`: 显示寄存器内容。 - `"+y` 或 `"*y"`: 复制到系统剪贴板。 ##### 1.9 标记和宏(macro) - `ma`: 定义标记a。 - `ga`: 跳转到标记a。 - `qq`: 开始录制宏。 - `q`: 结束录制。 - `@a`: 回放宏a。 ##### 1.10 编辑二进制文件 - `:set binary`: 设置为二进制模式。 ##### 1.11 帮助 - `:help`: 显示帮助信息。 - `:help <topic>`: 显示特定主题的帮助信息。 #### 2. 文本常见处理工具 - **文件内容查看命令**: - `cat`: 显示文件内容。 - `more`: 分页显示文件内容。 - `less`: 更灵活的分页显示文件内容。 - **分页查看文件内容**: - `more`: 一次一页地查看文件。 - `less`: 类似于`more`,但更灵活。 - **显示文本前或后行内容**: - `head`: 显示文件的前几行。 - `tail`: 显示文件的后几行。 - **按列抽取文本**: - `cut`: 从每个输入行抽取选择的字段或字符。 - **合并多个文件**: - `cat file1 file2 > mergedfile`: 合并文件。 - **分析文本的工具**: - `wc`: 计算字节数、字数、行数。 - `sort`: 排序文件。 - `uniq`: 报告或省略重复的行。 - `diff`: 比较文件。 #### 3. 正则表达式 - **基本正则表达式元字符**: - `.`: 匹配任何单个字符。 - `^`: 匹配行的开头。 - `$`: 匹配行的结尾。 - `[ ]`: 匹配括号内的任意一个字符。 - `|`: 表示或的关系。 - `*`: 匹配前面的表达式零次或多次。 - `+`: 匹配前面的表达式一次或多次。 - `{n}`: 匹配前面的表达式恰好n次。 - `{n,}`: 匹配前面的表达式至少n次。 - **扩展正则表达式**: - `(` `)`: 分组。 - `?`: 匹配前面的表达式零次或一次。 - `\b`: 匹配单词边界。 - `\B`: 匹配非单词边界。 - `\d`: 匹配数字。 - `\D`: 匹配非数字。 - `\s`: 匹配空白字符。 - `\S`: 匹配非空白字符。 - `\w`: 匹配字母数字字符。 - `\W`: 匹配非字母数字字符。 - `\A`: 匹配字符串的开始。 - `\Z`: 匹配字符串的结束。 #### 4. 文本处理三剑客 - **grep**: 用于搜索文本中的模式。 - **sed**: 用于文本流的编辑。 - **awk**: 强大的文本处理工具,能够进行复杂的数据处理。 以上内容概括了VIM编辑器的基本使用方法以及常见的文本处理工具和正则表达式的应用技巧,对于Linux运维人员来说是非常重要的基础知识。掌握了这些技能,可以帮助您更加高效地处理日常工作中遇到的各种文本数据问题。
- 粉丝: 2
- 资源: 15
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助