Linux vi中查找字符内容的方法

本文介绍在Vi/Vim编辑器中高效查找和替换字符串的方法,包括使用‘/’和‘?’进行查找,以及多种替换命令的使用,如‘:s’和‘:g’,并提供了解决文本中^M问题的策略。

https://www.cnblogs.com/logsharing/p/8036893.html
使用vi编辑器编辑长文件时,常常是头昏眼花,也找不到需要更改的内容。

这时,使用查找功能尤为重要。

方法如下:

1、命令模式下输入“/字符串”,例如“/Section 3”。

2、如果查找下一个,按“n”即可。

要自当前光标位置向上搜索,请使用以下命令:

/pattern Enter

其中,pattern表示要搜索的特定字符序列。

要自当前光标位置向下搜索,请使用以下命令:

?pattern Enter

按下 Enter键后,vi 将搜索指定的pattern,并将光标定位在 pattern的第一个字符处。例如,要向上搜索 place一词,请键入:

vi 查找替换大全

vi/vim 中可以使用 ? 命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。

?/vivian/sky/ 替换当前行第一个 vivian 为 sky

?/vivian/sky/g 替换当前行所有 vivian 为 sky

:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky

:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky

n 为数字,若 n 为 .,表示从当前行开始到最后一行

:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky

:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

?#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/

:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

1.?/vivian/sky/ 替换当前行第一个 vivian 为 sky

?/vivian/sky/g 替换当前行所有 vivian 为 sky

  1. :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky

:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky

(n 为数字,若 n 为 .,表示从当前行开始到最后一行)

  1. :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky

:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

  1. 可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

?#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/

  1. 删除文本中的^M

问题描述:对于换行,window下用回车换行(0A0D)来表示,Linux下是回车(0A)来表示。这样,将window上的文件拷到Unix上用时,总会有个^M.请写个用在unix下的过滤windows文件的换行符(0D)的shell或c程序。

· 使用命令:cat filename1 | tr -d “VM” > newfile;

· 使用命令:sed -e “s/VM//” filename > outputfilename。需要注意的是在1、2两种方法中,V和M指的是Ctrl+V和Ctrl+M。你必须要手工进行输入,而不是粘贴。

· 在vi中处理:首先使用vi打开文件,然后按ESC键,接着输入命令:%s/VM//。

· :%s/^M$//g

如果上述方法无用,则正确的解决办法是:

· tr -d “r” < src >dest

· tr -d “15” dest

· strings A>B

  1. 其它

利用 ? 命令可以实现字符串的替换。具体的用法包括:

?/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1

?/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1

:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1

:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1

:g/str1/s//str2/g 功能同上

从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索

字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。

查找到结果后,如何退出查找呢?输入:noh命令。

Linuxvi 编辑器中执行查找操作,可以使用内置的搜索命令来定位特定的字符串或模式。vi 编辑器的搜索功能基于正则表达式,因此可以执行简单的字符串搜索,也可以进行复杂的模式匹配。 ### 基本搜索命令 - **向下搜索**:输入 `/` 后跟要查找字符串,然后按 `Enter` 键。例如,要查找字符串 "example",可以输入 `/example` 并按 `Enter`。 - **向上搜索**:输入 `?` 后跟要查找字符串,然后按 `Enter` 键。例如,要向上查找字符串 "example",可以输入 `?example` 并按 `Enter`。 ### 搜索选项 - **忽略大小写**:可以在搜索命令后添加 `\c` 来忽略大小写。例如,`/example\c` 会匹配 "example"、"Example" 或 "EXAMPLE"。 - **精确匹配**:如果希望进行精确匹配而不是部分匹配,可以使用 `\b` 表示单词边界。例如,`/\bexample\b/` 会匹配完整的单词 "example",而不会匹配到 "examples" 中的部分。 ### 搜索导航 - **跳转到下一个匹配项**:在正常模式下按 `n` 键,可以跳转到下一个匹配项。 - **跳转到上一个匹配项**:在正常模式下按 `N` 键,可以跳转到上一个匹配项。 ### 替换操作 vi 编辑器还支持在搜索的基础上进行替换操作。基本的替换命令格式如下: ``` :[range]s/search_pattern/replace_string/[flags] ``` - **全局替换**:`:1,$s/oldstring/newstring/g` 会将整个文件中的 "oldstring" 替换为 "newstring"。 - **逐个确认替换**:`:1,$s/oldstring/newstring/gc` 会在每次替换前提示用户确认。 ### 示例代码 以下是一些常见的 vi 编辑器搜索和替换命令示例: ```vim /keyword " 向下搜索 "keyword" ?keyword " 向上搜索 "keyword" n " 跳转到下一个匹配项 N " 跳转到上一个匹配项 :%s/old/new/g " 将整个文件中的 "old" 替换为 "new" :5,10s/old/new/g " 在第 5 到第 10 行之间替换 "old" 为 "new" ``` ### 高级搜索技巧 - **使用正则表达式**:vi 编辑器支持使用正则表达式进行更复杂的搜索。例如,`/^\d+` 可以用来查找以数字开头的行。 - **搜索特殊字符**:如果要搜索的字符串中包含特殊字符(如 `/`、`?`、`.` 等),需要使用反斜杠 `\` 进行转义。例如,要搜索字符串 "http://example.com",可以输入 `/http:\/\/example\.com`。 通过这些命令和技巧,用户可以在 vi 编辑器中高效地进行查找和替换操作,从而提高编辑效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值