Linux文本处理、正则表达式与Vim详细指南

Linux文本处理、正则表达式与Vim详细指南

发布时间:2024-10-11 20:17:01

1. linux文本处理

1.1 常用命令

cat

  • 功能: 查看文件内容
  • 用法: cat [选项] [文件]...
  • 常用选项:
    • -n: 显示行号
    • -b: 显示非空行的行号
  • 示例:
    bash

    cat file.txt
    cat -n file.txt

grep

  • 功能: 搜索文本
  • 用法: grep [选项] 模式 [文件]...
  • 常用选项:
    • -i: 忽略大小写
    • -r: 递归搜索目录
    • -n: 显示行号
  • 示例:
    bash

    grep "error" log.txt
    grep -i "warning" *.log

sed

  • 功能: 流编辑器,用于文本替换、删除等
  • 用法: sed [选项] '命令' [文件]...
  • 常用命令:
    • s/旧/新/g: 替换
    • d: 删除
  • 示例:
    bash

    sed 's/old/new/g' file.txt
    sed '1,5d' file.txt # 删除1-5行

awk

  • 功能: 文本分析工具
  • 用法: awk [选项] '程序' [文件]...
  • 示例:
    bash

    awk '{print $1, $3}' file.txt # 打印第1和第3列
    awk -f: '{print $1}' /etc/passwd # 打印用户名

1.2 文件操作

head 和 tail

  • 功能: 查看文件开头或结尾
  • 用法:
    • head [-n 行数] [文件]...
    • tail [-n 行数] [文件]...
  • 示例:
    bash

    head -n 10 file.txt
    tail -f log.txt # 实时查看日志

sort

  • 功能: 排序
  • 用法: sort [选项] [文件]...
  • 常用选项:
    • -n: 按数字排序
    • -r: 逆序
  • 示例:
    bash

    sort numbers.txt
    sort -nr numbers.txt

uniq

  • 功能: 去重
  • 用法: uniq [选项] [输入[输出]]
  • 常用选项:
    • -c: 计数
  • 示例:
    bash

    sort file.txt | uniq
    sort file.txt | uniq -c

1.3 文本流处理

cut

  • 功能: 切割文本
  • 用法: cut [选项] [文件]...
  • 常用选项:
    • -d: 指定分隔符
    • -f: 指定字段
  • 示例:
    bash

    cut -d: -f1 /etc/passwd
    cut -c1-5 file.txt # 提取前5个字符

paste

  • 功能: 合并文件
  • 用法: paste [选项] [文件]...
  • 示例:
    bash

    paste file1.txt file2.txt
    paste -d: file1.txt file2.txt # 使用冒号作为分隔符

join

  • 功能: 基于共同字段合并文件
  • 用法: join [选项] 文件1 文件2
  • 示例:
    bash

    join file1.txt file2.txt
    join -1 2 -2 1 file1.txt file2.txt # 指定连接字段

2. 正则表达式

2.1 基本语法

字符类

  • .: 匹配任意单个字符
  • [abc]: 匹配a、b或c
  • [^abc]: 匹配除a、b、c以外的任意字符
  • [a-z]: 匹配a到z的任意小写字母

量词

  • *: 匹配前面的模式0次或多次
  • +: 匹配前面的模式1次或多次
  • ?: 匹配前面的模式0次或1次
  • {n}: 精确匹配n次
  • {n,}: 匹配至少n次
  • {n,m}: 匹配n到m次

锚点

  • ^: 匹配行首
  • $: 匹配行尾
  • : 匹配单词边界

2.2 高级特性

后向引用

  • 1, 2, ...: 引用前面的捕获组

零宽断言

  • (?=...): 正向肯定断言
  • (?!...): 正向否定断言
  • (?<=...): 反向肯定断言
  • (?: 反向否定断言

2.3 在linux命令中的应用

grep with regex

bash

grep -e "pattern" file.txt
egrep "pattern" file.txt

sed with regex

bash
sed -e 's/pattern/replacement/g' file.txt

awk with regex

bash
awk '/pattern/ {print $0}' file.txt

3. vim

3.1 基本操作模式

普通模式

  • 移动: h, j, k, l
  • 单词移动: w, b, e
  • 行首/尾: 0, $
  • 文件首/尾: gg, g

插入模式

  • 进入: i (当前位置), a (下一个位置), o (下一行)
  • 退出: esc

可视模式

  • 进入: v (字符), v (行), ctrl-v (块)
  • 操作: 选中后可以复制、删除、替换等

3.2 文本编辑命令

  • 复制: y
  • 粘贴: p
  • 删除: d
  • 替换: r
  • 撤销: u
  • 重做: ctrl-r

3.3 高级特性

  • 录制: q{寄存器}
  • 停止录制: q
  • 播放: @{寄存器}

寄存器

  • 命名寄存器: "a"z
  • 复制到寄存器: "{寄存器}y
  • 从寄存器粘贴: "{寄存器}p

插件

  • 安装插件管理器 (如 vim-plug)
  • .vimrc 中配置插件
  • 常用插件:
    • nerdtree: 文件浏览器
    • ctrlp: 模糊文件查找
    • vim-airline: 状态栏美化

3.4 常见问题和解决方案

  1. 无法退出vim
    • 解决: 按 esc 确保在普通模式,然后输入 :q! 强制退出
  2. 误删内容
    • 解决: 使用 u 撤销,或 :earlier 1m 回到1分钟前的状态
  3. 中文显示乱码
    • 解决: 在 .vimrc 中添加 set encoding=utf-8
  4. 配置不生效
    • 解决: 确保 .vimrc 文件位置正确,使用 :source ~/.vimrc 重新加载
  5. 插件安装失败
    • 解决: 检查网络连接,确保插件管理器正确安装,尝试手动克隆插件仓库

一个详细的指南,涵盖了linux文本处理、正则表达式和vim的主要方面。这个指南包括了每个主题的核心概念、常用命令和技巧,以及一些常见问题的解决方案。

感谢提供:05互联