Linux学习笔记(十一)VI、VIM和文本处理

1. VI和VIM是文本编辑器,vim命令即可启动VIM编辑器。编辑特定文件,格式为:vim + 目标文件路径,如果目标文件存在,则vim打开该文件;如果不存在,vim新建并打开该文件。

2. vim有3中模式

(1) 命令模式:默认情况下为命令模式,通过键入不同命令完成选择、复制、粘贴、撤销等操作。

常见的命令有:

i:在光标前插入文本  

a如果将光标移动到行尾,输入“a”,光标就会越过行尾,vi进入插入模式

A:移动到当前行的末尾,并且能添加文本。

o:在当前行的下一行插入新行

O:当前行的上方打开一行。

dd:删除当前行                                                                           

u:撤销上一个操作

yy:将当前行的内容复制

p:将缓冲区的文本放入光标之后,即粘贴

P:将文本粘贴到光标之前。

n[+]yy:将该行(包括该行)下的n行内容复制

r:替换的当前字符

/:在整个文件中查找关键字,通过n命令来重复先前的查找。

f命令查找一行,移动到下一个所指定的字符上。在一行中执行了字符的查找命令之后,通过输入分号来重复这个查找。

(2) 插入模式:在命令模式下按"i"即可进入插入模式,在该模式下可编辑文本内容,按Esc键返回命令模式。

(3) ex模式:在插入模式下按“:”即可进入该模式,光标会移动到底部,可保存修改或退出vim

:w---保存当前修改

:q---直接退出

:q!---强制退出,不保存修改

:x---保存并退出

:set number---显示行号

:!---执行一系统命令并显示结果

:sh---切换到命令行,Ctrl+d则可以返回vim



注意:

真正的 vi 只是支持单层面的 undo 命令。vim 则支持多个层面的

大写J用于把行与行之间连接起来



:%s/Line/line/g


也可以指定一个需要用户确认的替换命令。通过添加一个”c”字符到这个命令的末尾,来完成这个替换命令。


:%s/line/Line/gc

替换确认按键


编辑多个文件:


vi file1 file2 file3...

从这个文件转到下一个文件,使用这个 ex 命令:


:n

回到先前的文件使用:

:N
当我们从一个文件移到另一个文件时,如果当前文件没有保存修改,vi 会阻止我们转换文件,这是 vi 强制执行的政策。在命令之后添加感叹号,可以强迫 vi 放弃修改而转换文件。



可以查看正在编辑的文件列表,使用:buffers 命令。运行这个命令后,屏幕顶部就会显示出一个文件列表。



插入整个文件到另一个文件
这个:r 命令(是”read”的简称)把指定的文件插入到光标位置之前。

3. 基于关键字搜索

grep命令用于基于关键字搜索文本,如:grep 'linux' /etc/passwd          find / -user linux | grep video

对应的参数有:

-i:搜索时忽略大小写

-v:输出不带关键字的行,相当于取反操作

-n:显示结果所在行数

-Ax:在输出的时候包含结果所在行之后的指定行数

-Bx:在输出的时候包含结果所在行之前的指定行数

在我们的程序列表中,找到文件名中包含单词"zip"的所有文件:ls /bin /usr/bin | sort | uniq | grep zip

4. 基于列处理文本

cut命令用于处理文本内容,如:cut -d:-f1 /etc/passwd 表示对passwd文件使用“:”作为分隔符分割成一列一列之后再显示其中的第一列,其中参数d表示分割符,默认为tab,参数f表示指定输出的列号

参数-c表示基于字符进行切割,如cut -c2-6 /etc/passwd

5. 文本统计

wc命令用于文本统计

参数

-l:只统计行数

-w:只统计单词

-c:只统计字节书

-m:只统计字符数

查看我们有序列表中程序个数:ls /bin /usr/bin | sort | uniq | wc -l

6.文本排序:sort

sort文件---表示基于每一行的首字母进行排序,也可对数字进行排序

参数:

-r:倒序排序

-n:基于数字排序

-f:忽略大小写

-u:删除重复行

-t c:使用c作为分隔符分别为列进行排序

-kx:当进行基于指定字符分割为列的排序时,指定基于哪个列排序

sort -u用于删除重复行,uniq用于删除重复的相邻行

7. 文本比较:diff

diff linux linux-new

参数:

-i:忽略大小写

-b:忽略空格数量的变化

-u:统一显示比较信息

diff -u linux linux-new > final.patch用于生成补丁文件

8. 拼写检查:aspell,只适于英文拼写

aspell check linux

aspell lixt < linux

9. 处理文本内容:tr

删除关键字:tr -d 'TMD' < linux

转换大小写:tr'a-z' 'A-Z' < linux

10.搜索替换:sed

sed 's/linux/unix/g' linux;其中s表示搜索,将linux替换为unix,g表示全局替换

sed '1,50s/linux/unix/g' linux;表示在linux文件中只查找1-50行,并将linux替换为unix

sed -e 's/linux/unix/g' -e 's/nash/nash1/g' linux

sed -f sededit linux

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mengrennwpu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值