Linux正则表达式与VIM编辑器的使用

什么是正则表达式

正则表达式是一种文本模式,或者说是一种特殊的字符串模式,它的作用是处理字符串。

字符

学习正则表达式的前提是需要了解正则表达式中需要用到的一些字符及其含义:

  • \ 转意符,将特殊字符或符号的意义去除。
  • . 代表任意一个字符。
  • * 重复0次或多次*前的一个字符。
  • [] 字符的集合。
  • .* 匹配所有字符。
  • ^ 匹配某字符的开头。
  • $ 匹配某字符的结尾。
  • ^$ 匹配空行。
  • [^] 取反。
  • ^.* 匹配多个任意字符开头。
  • | 或。
  • [A-Z] 26个大写字母。
  • [a-z] 26个小写字母。
  • [0-9] 0~9的数字。
  • \d 匹配一个数字字符。
  • \w 匹配包括下划线的任意单词字符。
  • \b 匹配单词的开始或结束。
  • + 重复一次或多次。
  • ? 重复零次或一次。
  • {n} 重复n次。
  • {n,m} 重复n到m次。

文本处理命令

正则表达式经常会与这些命令配合一起使用。

grep命令

grep 命令是一个强大的文本搜索工具,它与正则表达式配合,将匹配到的行输出到屏幕上。

语法格式:

grep [选项] 条件表达式 文件名

常用选项:

  • -c 只输出匹配的列数。
  • -I 不区分大小写,只适用于单字符。
  • -l 查询多文件时只输出包含匹配字符的文件名。
  • -n 显示匹配行及行号。
  • -s 不显示不存在或无匹配文本的错误信息。
  • -v 显示不包含匹配文本的所有行。

sed 命令

sed 命令是一种流编辑器,用于过滤或转换文本。

语法格式:

sed [选项] 'command' 文件名

常用选项:

  • -n 取消默认输出。
  • -i 修改文件内容。

常用command:

  • d 删除。
  • p 打印。
  • s 替换指定字符。
  • g 全局替换。

awk 命令

awk 是一个强大的编程工具,用于Linux和UNIX下对文本和数据进行处理。

语法格式:

awk [选项] '条件{动作}' 文件名

常用选项:

  • -F fs 指定分隔符,fs可以是字符串或正则表达式。
  • -f scripfile 从脚本文件种读取awk命令。

正则表达式使用示例

将系统种的IP地址去除并输出到屏幕上

  1. 打印IP地址信息,然后截取第二行内容输出。
    [root@test ~]# ifconfig eth0|sed -n '2g'
    
  2. 将第一步结果中的"addr:"及其前所有字符全局替换成空。
    [root@test ~]# ifconfig eth0|sed -n '2g'|sed -r 's# Bcast.*$##g'
    
  3. 将第二步的结果种的"Bcast"开头且任意字符结尾的部分全局替换成空。
    [root@test ~]# ifconfig eth0|sed -n '2g'|sed -r 's# Bcast.*$##g'|sed -r 's# Bcast.*$##g'
    

使用grep命令与awk命令配合正则表达式取出IP地址

  1. 将带有IP地址的行过滤打印出来,再进行过滤取出IP地址。
    [root@test ~]# ifconfig eth0|grep "inet addr"
    
  2. 以空格和":"作为分隔符,“+”代表前面多个重复的分隔符视为一个,将第四列打印。
    [root@test ~]# ifconfig eth0|grep "inet addr"|awk -F '[ :]+' '{print $4}'
    

vim 编辑器

vim就是vi编辑器的加强版,比vi更容易使用。

vim的三种模式

  1. 命令模式
    在此模式下,可以通过移动光标,对字符或行进行删除操作。
  2. 插入模式
    在命令模式下,按i键即可进入插入模式,只有在插入模式才可以进行文字、字符的输入操作。按Esc键可以退出插入模式。
  3. 底行模式
    在命令行模式下,按:键进入底行模式,在此模式下,可以保存文件、设置编辑环境,以及退出vim编辑器。按Esc键可以退出底行模式。

光标的移动方法

vim编辑器在命令行模式下的光标的移动方法。

按键说明
Crtl + F屏幕向下移动一页,相当于按Page Down
Crtl + B屏幕向上移动一页,相当于按Page Up
0移动到行首位置
$移动到行尾位置
GG移动到第一行
G移动到最后一行,与Shift + G功能相同
nEnter光标向下移动n行(n为数字)

搜索与查找

vim编辑器在命令模式下搜索与查找的方法

具体命令说明
/word向下查找匹配名为word的字符串
?word向上查找匹配名为word的字符串
:n1,n2s/word1/word2/gn1和n2为数字,在第n1行与第n2行之间查找匹配word1的字符串,并将word1的字符串转换成word2
:1,$S/word1/word2/g在第一行与最后一行之间查找匹配word1的字符串,并将word1的字符串转换成word2
:1,$S/word1/word2/gc在第一行与最后一行之间查找匹配word1的字符串,并将word1的字符串转换成word2,替换前进行提示,确认是否需要替换
:%s/word1/word2/g将匹配word1的内容全部替换为word2

删除、复制与粘贴

vim编辑器在命令模式下删除、复制与粘贴。

具体命令说明
yy复制光标当前的行
nyy复制当前光标所在向下的n行
dd删除光标当前所在的行
ndd删除当前光标所在向下的n行
U撤销上一次的操作
p将复制的内容粘贴在光标所在的下一行
P将复制的内容粘贴在光标所在的上一行
x删除光标所在的后一个字符
X删除光标所在的前一个字符

保存与退出

vim编辑器在插入模式下保存与退出的方法。

具体命令说明
:wq保存并退出
:wq!保存并强制退出
:q!强制退出不保存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值