网站首页 > 文章中心 > 其它

linux替换文本的命令

作者:小编 更新时间:2023-10-02 12:07:38 浏览量:10人看过

linux怎么批量替换文件内容?

方法一:

使用perl ,命令如下:

下面这个例子就是将当前目录及所有子目录下的所有pom.xml文件中的

""

替换为

"".

这里用到了Perl语言,

perl -pi -e 在Perl 命令中加上-e 选项,后跟一行代码,那它就会像运行一个普通的Perl 脚本那样运行该代码.

方法二:

使用sed命令如下:

Linux下批量替换多个文件中的字符串的简单方法.用sed命令可以批量替换多个文件中的字符串.

例如:我要把aaa替换 为bbb,执行命令:

这是目前linux最简单的批量替换字符串命令了!

具体格式如下:

实例代码:

linux之文本内容替换命令sed

sed流程:sed通过一次仅读取一行内容来对某些指令进行处理后输出.

①.、sed通过文件或管道读取文件内容,但sed默认并不直接修改源文件,而是将读入的内容复制到缓冲区中,称之为模式空间.

sed基本语法格式:

用法:sed[选项]...{脚本指令}[输入文件]...

选项: -version 显示sed版本

-help :显示帮助文档

-n,-quiet,-silent静默输出,默认情况下,sed程序在所有的脚本指令执行完毕后,将自动打印模式空间中的内容.

-e script允许多个脚本指令被执行

-f script-file从文件中读取脚本指令,对编写自动化脚本程序很实用

-i ,-in-place 该选项直接修改源文件

-l N 该选项指定l指令可以输出的行长度,l指令为输出非打印字符.

-posix 禁用GNU sed扩展功能.

-r 在脚本指令中使用扩展正则表达式.

-s,-separate 默认情况下,sed将把输入的多个文件名作为一个长的连续的输入流.而GNU sed则允许把它们当作单独的文件.

-u,-unbuffered 最低限度的缓存输入与输出

a,append表示追加指令;

i,insert表示插入指令;

d,delete表示删除指令;

s,substitution表示替换指令.

sed脚本指令的基本格式是:

[地址,即路径]命令(有些命令仅可以对一行操作,有些可以对多行操作),命令也可以用花括号进行组合,使命令序列可以作用于同一个地址.

address{

command1

}

sed的基本工作方式是:

sed的替换命令s:

为什么要有多行模式: 配置文件一般有单行出现,但也有使用json或XML格式的配置文件,为多行出现.

多行模式处理命令N、D、P

分别是:命令模式、文本输入模式、和末行模式.

第一:命令行模式:

第二:文本输入模式:

在命令模式下输入命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式.在该模式下,用户输入的任何字符都被vi当作文件内容保护起来,并将其显示在屏幕上.在文本输入过程中,若想回到命令模式下,按ESC键即可.

第三:末行模式:

实例演示

首先我们使用命令 vi filename 打开一个文件,这个时候进入到的是命令模式

此时此刻呢我们按i,然后键盘随便输入写内容.

然后按ESC重新进入到命令模式.

在命令模式的情况下,我们按:,进入到了末行模式.

我们输入wq!,然后回车,强行保存退出.

下次我们再打开对应文件(可用less filename命令打开),即可看到内容已经更改.

补充:

(1)末行模式下:q! 【强制退出不保存】 q【退出不保存】 wq【退出并保存后面也可以加个!】

更多命令

进入vi的命令:

vi filename :打开或新建文件,并将光标置于第一行首

vi ◆n filename :打开文件,并将光标置于第n行首

vi ◆ filename :打开文件,并将光标置于最后一行首

vi ◆/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处

屏幕翻滚类命令:

Ctrl◆u:向文件首翻半屏

Ctrl◆d:向文件尾翻半屏

Ctrl◆f:向文件尾翻一屏

Ctrl+b;向文件首翻一屏

nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部.

插入文本类命令:

i :在光标前

I :在当前行首

a:光标后

A:在当前行尾

o:在当前行之下新开一行

O:在当前行之上新开一行

r:替换当前字符

R:替换当前字符及其后的字符,直至按ESC键

s:从当前光标位置处开始,以输入的文本替代指定数目的字符

S:删除指定数目的行,并以所输入文本代替之

ncw或nCW:修改指定数目的字

nCC:修改指定数目的行

删除命令:

ndw或ndW:删除光标处开始及其后的n-1个字

do:删至行首

d$:删至行尾

ndd:删除当前行及其后n-1行

x或X:删除一个字符,x删除光标后的,而X删除光标前的

Ctrl◆u:删除输入方式下所输入的文本

搜索及替换命令:

/pattern:从光标开始处向文件尾搜索pattern

pattern:从光标开始处向文件首搜索pattern

n:在同一方向重复上一次搜索命令

N:在反方向上重复上一次搜索命令

撤销回退命令:

u 撤销上一步的操作

Ctrl◆r 恢复上一步被撤销的操作

选项设置:

all:列出所有选项设置情况

term:设置终端类型

ignorance:在搜索中忽略大小写

list:显示制表位(Ctrl◆I)和行尾标志($)

number:显示行号

report:显示由面向行的命令修改过的数目

terse:显示简短的警告信息

warn:在转到别的文件时若没保存当前文件则显示NO write信息

nomagic:允许在搜索模式中,使用前面不带"\"的特殊字符

nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始

mesg:允许vi显示其他用户用write写到自己终端上的信息

末行模式命令:

:w :保存当前文件

:x:保存当前文件并退出

:q:退出vi

:q!:不保存文件并退出vi

:wq:保存并退出

:!command:执行shell命令command

:r!command:将命令command的输出结果放到当前行

寄存器操作:

"?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字

"?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字

"?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字

"?p:取出寄存器?中的内容并将其放到光标位置处.这里?可以是一个字母,也可以是一个数字

ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中.

linux服务器文本关键字搜索替换

①.、vi命令下的查找和替换

①1 vi下的查找

/helloEnter :向下查找hello匹配字符串

helloEnter:向上查找hello匹配字符串

使用了查找命令之后,使用如下两个键快速查找:

n:按照同一方向继续查找

N:按照反方向查找

hello是需要匹配的字符串,例如:

/nameEnter? ? ? #查找name

/nameEnter? ? #查找name单词(注意前后的空格)

除此之外,hello还可以使用一些特殊字符,包括(/、^、$、*、.),其中前三个这两个是vi与vim通用的,"/"为转义字符.

/^nameEnter? ? #查找以name开始的行

/name$Enter? ? #查找以name结束的行

//^nameEnter? ? #查找^name字符串

: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/

命令: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

命令格式: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'

Linux常用命令

①grep:找出文件中含有关键字的行

查看刚才是否些文件成功

有一些脚本是依据文件名进行各种处理的.我们可能会需要在保留扩展名的同时修改文件名,转换文件格式或提取部分文件名.

以上就是土嘎嘎小编为大家整理的linux替换文本的命令相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章