大数据学习笔记(五) -- linux中vi编辑器的快捷键以及正则表达式

版权声明:weixin_40247263的博客 https://blog.csdn.net/weixin_40247263/article/details/82822756

Table of Contents

文本操作技巧

打开文件关闭文件

从编辑模式到输入模式的常用操作 

在编辑模式下移动光标的快捷键 

在编辑模式下,进行复制粘贴撤销操作 

末行模式 

正则表达式(grep)


文本操作技巧

打开文件关闭文件

[root@node001 ~]# vi +22 profile     # 打开且光标移动至22行
[root@node001 ~]# vi + profile       # 打开且光标移动至最后一行
[root@node001 ~]# vi +/after profile   # 打开且光标移动第一次出现单词after的位置
 

从编辑模式到输入模式的常用操作 

 


在编辑模式下移动光标的快捷键 


在编辑模式下,进行复制粘贴撤销操作 

解释: 

  1. 复制粘贴 是 yw 或 yy ,然后 p或 P ,如果是剪切的话,就是先 dd 或dw 再 p 或P 。
  2. 上面的命令是可以跟数字结合的,如3dd ,删除3行内容,从光标所在行开始。3dw删除3个单词,从光标所在字符开始。
  3. 也可使用 dG 命令,代表从当前行开始将下面的内容全部删除。

末行模式 

额外用法

  1.  输入冒号进入 末行 模式, 输入   num1,num2d 可以删除 num1行到num2行的内容。
  2.  输入冒号进入 末行 模式, 输入   num1,num2y 可以复制 num1行到num2行的内容。
  3.  输入冒号进入 末行 模式, 输入   num1,&-2d 可以删除 num1行到倒数第二行的内容。

 用法示例:

我们将 第2行开始到第20行之间的所有 etc 替换成 abc ,注意当前的光标在第16行,那么我们可以使用如下命令

2,.+4s/etc/abc/g

效果如下


正则表达式(grep)

我们可以通过grep命令 来匹配某文本中的某行或某些行是否 与 我们给出的 正则表达式相匹配,然后显示出所匹配的行内容

正则表达式中的操作符分为两种,一种是基本操作符,一种是扩展的,下面有两张图黑色字体的为基本操作符,红色字体的为扩展操作符。使用时扩展操作符需要在 操作符前面加上 \  进行转义,或者在 grep 后面加上 -E 参数

 正则表达式常用的操作符

 下面是几个示例

[root@node001 ~]# cat grep 
ojasoidjsaoidj1w3213ddhelloas
d12e12js21s212
dwqdoi32132dasd
hello/sadq213213hi dsadsadsahi dsamk
hello dcxzcjuhicenruqehello sdadshi
czxczxc1321kjbckhqweqwk
1dasfs hello das

找出grep文件中包含数字的行

[root@node001 ~]# grep "[0-9]" grep 
ojasoidjsaoidj1w3213ddhelloas
d12e12js21s212
dwqdoi32132dasd
hello/sadq213213hi dsadsadsahi dsamk
czxczxc1321kjbckhqweqwk
1dasfs hello das

找出grep文件中包含字符串hello的行

[root@node001 ~]# grep "hello" grep 
ojasoidjsaoidj1w3213ddhelloas
hello/sadq213213hi dsadsadsahi dsamk
hello dcxzcjuhicenruqehello sdadshi
1dasfs hello das

找出grep文件中包含 hello 单词的行

[root@node001 ~]# grep "\<hello\>" grep 
hello/sadq213213hi dsadsadsahi dsamk
hello dcxzcjuhicenruqehello sdadshi
1dasfs hello das

找出grep文件中包含连续两个 "dsa" 字符的行 

[root@node001 ~]# grep "\(dsa\)\{2\}" grep 
hello/sadq213213hi dsadsadsahi dsamk
[root@node001 ~]# grep -E "(dsa){2}" grep 
hello/sadq213213hi dsadsadsahi dsamk

找出grep文件中 包含 "hello" 隔若干字符  "hi"  的行

[root@node001 ~]# grep -E "(hello).*(hi)" grep 
hello/sadq213213hi dsadsadsahi dsamk
hello dcxzcjuhicenruqehello sdadshi

找出grep文件中 包含 "hello" 隔若干字符 "hi" 隔若干字符 "hello" 隔若干字符 "hi" 接若干字符的 行

[root@node001 ~]# grep -E "(hello).*(hi).*\1.*\2" grep 
hello dcxzcjuhicenruqehello sdadshi

猜你喜欢

转载自blog.csdn.net/weixin_40247263/article/details/82822756