2023年8月2日发(作者:)
linuxvi⽂件查找,linux⼏种常见的⽂件内容查找和替换命令1、vi命令下的查找和替换1.1 vi下的查找/pattern :向下查找pattern匹配字符串pattern:向上查找pattern匹配字符串使⽤了查找命令之后,使⽤如下两个键快速查找:n:按照同⼀⽅向继续查找N:按照反⽅向查找pattern是需要匹配的字符串,例如:/name #查找name除此之外,pattern还可以使⽤⼀些特殊字符,包括(/、^、$、*、.),其中前三个这两个是vi与vim通⽤的,“/”为转义字符。/^name #查找以name开始的⾏/name$ #查找以name结束的⾏//^name #查找^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/和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 ./*.命令查找和替换命令格式: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‘
2023年8月2日发(作者:)
linuxvi⽂件查找,linux⼏种常见的⽂件内容查找和替换命令1、vi命令下的查找和替换1.1 vi下的查找/pattern :向下查找pattern匹配字符串pattern:向上查找pattern匹配字符串使⽤了查找命令之后,使⽤如下两个键快速查找:n:按照同⼀⽅向继续查找N:按照反⽅向查找pattern是需要匹配的字符串,例如:/name #查找name除此之外,pattern还可以使⽤⼀些特殊字符,包括(/、^、$、*、.),其中前三个这两个是vi与vim通⽤的,“/”为转义字符。/^name #查找以name开始的⾏/name$ #查找以name结束的⾏//^name #查找^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/和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 ./*.命令查找和替换命令格式: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‘
发布评论