linux几种常见的文件内容查找和替换命令

作为一个以前没怎么接触过linux的小白,开始使用linux,各种不习惯,这周遇到一个文件内容测查找和替换的需求。学习了以下几种实现方式:

1、vi命令下的查找和替换

1.1 vi下的查找

/pattern<Enter> :向下查找pattern匹配字符串

?pattern<Enter>:向上查找pattern匹配字符串
使用了查找命令之后,使用如下两个键快速查找:
n:按照同一方向继续查找
N:按照反方向查找
pattern是需要匹配的字符串,例如:
/name<Enter>      #查找name
/name<Enter>    #查找name单词(注意前后的空格)
除此之外,pattern还可以使用一些特殊字符,包括(/、^、$、*、.),其中前三个这两个是vi与vim通用的,“/”为转义字符。
/^name<Enter>    #查找以name开始的行
/name$<Enter>    #查找以name结束的行
//^name<Enter>    #查找^name字符串

1.2 vi下的替换

:s/name/title/         #替换当前行第一个 name 为 title
:s/name/title/g     #替换当前行所有 name 为 title
:n,$s/name/title/     #替换第 n 行开始到最后一行中每一行的第一个 name 为 title
:n,$s/name/title/g     #替换第 n 行开始到最后一行中每一行所有 name 为 title
#(n 为数字,若 n 为 .,表示从当前行开始到最后一行)
:%s/name/title/        #(等同于 :g/name/s//title/) 替换每一行的第一个 name 为 title
:%s/name/title/g    #(等同于 :g/name/s//title/g) 替换每一行中所有 name 为 title
可以使用 #或+ 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#name/#title/#         替换当前行第一个 name/ 为 title/
:%s+/oradata/apras/+/user01/apras1+ (
使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

2.sed和grep配合

命令:sed -i s/yyyy/xxxx/g `grep yyyy -rl --include="*.txt" ./`

作用:将当前目录(包括子目录)中所有txt文件中的yyyy字符串替换为xxxx字符串。其中,

-i 表示操作的是文件,``括起来的grep命令,表示将grep命令的的结果作为操作文件。

s/yyyy/xxxx/表示查找yyyy并替换为xxxx,后面跟g表示一行中有多个yyyy的时候,都替换,而不是仅替换第一个

另外,如果不需要查找子目录,仅需要在当前目录替换,用sed命令就行了,命令如下:sed -i s/xxxx/yyyy/g ./*.txt

3.find命令查找和替换

命令格式:find -name ‘要查找的文件名‘ | xargs perl -pi -e ‘s|被替换的字符串|替换后的字符串|g‘

#查找替换当前目录下包含字符串并进行替换

find -name ‘*.txt‘ | xargs perl -pi -e ‘s|智慧乡村|北部山区|g‘

#递归查找替换

find . -type f -name ‘*.html‘ | xargs perl -pi -e ‘s|智慧乡村|北部山区|g‘

原文地址:https://www.cnblogs.com/tzhyy/p/10691631.html

时间: 2024-10-14 21:02:47

linux几种常见的文件内容查找和替换命令的相关文章

linux几种快速清空文件内容的方法

linux几种快速清空文件内容的方法 几种快速清空文件内容的方法: $ : > filename #其中的 : 是一个占位符, 不产生任何输出. $ > filename $ echo "" > filename $ echo /dev/null > filename $ echo > filename $ cat /dev/null > filename

linux几种快速清空文件内容的方法:

几种快速清空文件内容的方法: $ : > filename #其中的 : 是一个占位符, 不产生任何输出. $ > filename $ echo “” > filename $ echo /dev/null > filename $ echo > filename $ cat /dev/null > filename 原文地址:https://www.cnblogs.com/saffibai/p/12246568.html

Ubuntu中的在文件中查找和替换命令

1.查找 find /home/guo/bin -name /*.txt | xargs grep 'jdbc' 查找 /home/guo/bin 目录下所有后缀为.txt 的文件(PS:/* 转义* 为统配符),通过 xargs 命令传递给 grep 作为文件参数 grep 'jdbc' 所搜显示文件中所有包含 jdbc字符串的行 2.替换 find /home/guo/bin -name /*.txt | xargs sed -i 's/@/1/g' 查找 /home/guo/bin 目录下

linux下的find文件查找命令与grep文件内容查找命令

linux下的find文件查找命令与grep文件内容查找命令 在使用linux时,经常需要进行文件查找.其中查找的命令主要有find和grep.两个命令是有区的. 区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等. (2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找. 一.find命令 基本格式:find  path expression 1.按照文件名查找 (1)find / -

ubuntu下文件内容查找命令

Linux查找文件内容的常用命令方法. 从文件内容查找匹配指定字符串的行: $ grep "被查找的字符串" 文件名 例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件 grep "thermcontact" */*.in 从文件内容查找与正则表达式匹配的行: $ grep –e “正则表达式” 文件名 查找时不区分大小写: $ grep –i "被查找的字符串" 文件名 查找匹配的行数: $ grep -c "被查找的字符

linux shell 字符串操作(长度,查找,替换,匹配)详解

linux shell 字符串操作(长度,查找,替换,匹配)详解 在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快. 一.判断读取字符串值 表达式 含义 ${var} 变量var的值, 与$var相同     ${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${va

〖Linux〗上传单个文件到FTP的Shell命令行(函数)

1 #!/bin/bash - 2 #=============================================================================== 3 # 4 # FILE: ftp_put_file.sh 5 # 6 # USAGE: ./ftp_put_file.sh 7 # 8 # DESCRIPTION: 9 # 10 # OPTIONS: --- 11 # REQUIREMENTS: --- 12 # BUGS: --- 13 # NO

Linux在所有文件中查找和替换

经常会碰到这样的情况:查找某个目录下所有包含某个字符串的所有文件,并将这些文件中的这个字符串用另外的字符串替换进行替换.这种情况下,网网要检查的文件比较多,逐一进行检查替换太麻烦,这个时候,我们就应该找一个能够一条命令解决问题的方法. 1.grep命令 grep pattern file.txt命令默认的行为是将file.txt文件中,匹配pattern的行输出到标准输出.这个功能能帮助我们在文件中查找一个字符串出现的上下文,但是并不能够帮助我们实现下一步复杂的操作,所以有必要稍微了解下grep

Linux nl --让输出的文件内容自动加上行号

nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能. 1.命令格式: nl [选项]... [文件]... 2.命令参数: -b :指定行号指定的方式,主要有两种: -b a:表示不论是否为空行,也同样列出行号(类似 cat -n): -b t:如果有空行,空的那一行不要列出行号(默认值): -n :列出行号表示的方法,主要有三种: -n