it-swarm.cn

使用“ sed”查找和替换

我知道这个问题以前可能已经回答过。我在各个地方都看到过很多与此相关的话题,但是对于我来说,答案通常很难提取。我正在寻找有关sed命令用法示例的帮助。

假设我想对文件“ hello.txt”(与“提示”位于同一目录)进行操作。任何包含短语“ few”的地方,都应更改为“ asd”。该命令是什么样的?

338
roo

seds治疗ed itor ,因为您可以使用|(管道)通过sed发送标准流(特别是STDIN和STDOUT),并以编程方式实时更改它们,从而它是Unix哲学传统中的一种方便的工具;但也可以使用下面提到的-i参数直接编辑文件。
请考虑以下内容

sed -i -e 's/few/asd/g' hello.txt

s/用于s将找到的表达式fewasd替代:

少数,勇敢。


Asd,勇敢。

/g代表“全局”,表示对整行都执行此操作。如果您不使用/g(使用s/few/asd/,则无论如何都始终需要三个斜杠),并且few在同一行上出现两次,只有前一个few更改为asd

几个男人,几个女人,勇敢。


Asd男人,几个女人,勇敢。

在某些情况下,这很有用,例如在行的开头更改特殊字符(例如,用水平制表符替换某些人用来在电子邮件线程中引用以前材料的大于号,而在行的后面保留带引号的代数不等式未修改),但是在您指定出现anywherefew的示例中,应将其替换为/g

以下两个选项(标志)被组合为一个,-ie

-i选项用于编辑文件hello.txt上的in个位置。

-e选项表示要运行的e表达式/命令,在本例中为s/

注意:使用-i -e进行搜索/替换很重要。如果执行-ie,则将为每个文件创建备份,并附加字母“ e”。

630
Mohammad Etemaddar
sed -i 's/fea/asd/g'  hello.txt

g:全局

s:替代

-i:实时处理文件inplace

75
PersianGulf