linux sed 替换

说白了,Linux中的sed命令其实很简单。
它是处理文本文件的强大工具。
我们先来说说最重要的事情。
sed 可以自动修改文件,例如替换“.”在文件的每一行末尾加上“!”。
这一过程只需要一个命令行:“sed 's/.$!/!/'normal_express.txt”。
还有一点,sed还可以直接在文件最后一行添加内容,如:“sed -i '$a Thisisatest'normal_express.txt”。
还有另一个关键细节。
sed的“-i”选项可以直接修改文件的内容,这在处理大文件时特别有用。

一开始我以为sed只是一个简单的文本编辑工具,但后来发现它还可以进行复杂的文本处理,比如替换每行的第一个字符串或者删除包含特定字符串的行。
比如我们去年跑的项目,大概有3 000层数据。
要使用 sed 替换每行中的第一个字符串,只需:“sed -i 's/original string/new string/g' file”。
等等,还有一件事,sed 还可以删除行首带有“@”的前导字母。
很多人并没有注意到这个功能。

我认为值得尝试使用 sed 执行批处理操作,例如删除具有特定字符串的行。
可以直接使用:“sed -i '/特定字符串/d'文件”。
很多人都没有注意到这一点,但这其实是一个陷阱,因为一不小心,可能会不小心删除重要数据。
因此,在使用 sed 之前,请确保您的脚本正确。

linux下的sed命令使用?

那天我在办公室处理一个重要的配置文件,有很多路径分隔符“/”需要用“\\”替换。
我打开终端,小心地输入命令行:
猫cata.conf |抓住'/'| sed 's/oracle/orcl/g' > tmp.conf
该命令执行得非常快,几秒钟后我得到了一个名为 tmp.conf 的临时文件,其中所有字符串都根据需要进行了替换。
然后我决定使用 mv 命令将临时文件替换回原始文件:
等等 tmp.conf cata.conf
操作完成,文件名从 cata.conf 更改为 tmp.conf,然后又更改回 cata.conf。
等等,我突然想到,如果直接用sed的i选项直接修改原文件不是更简单吗?我尝试使用 seds i 选项再次执行此操作:
sed -in 's/oracle/orcl/g' cata.conf
这次直接在终端修改文件,没有生成任何临时文件。
嗯,看起来也可以直接修改文件,但最好还是做好备份,以防万一。
时间:2 02 3 年3 月1 5 日,地点:办公室,操作次数:2 次。

Linux中使用sed命令替换字符串小结

你好,想问一下 sed 吗?好的,让我引导您完成它。
这个东西一旦了解了之后真的很方便。

让我们谈谈我最近正在研究的一个例子。
去年我在北京举办一个活动时,我不得不处理一堆日志文件。
许多行看起来相同,但某个字段不同。
我想把它们分成几组。
Sed 就是为这种事情而生的。

您对基本语法的看法是正确的,sed 's/original string/replacement string/' 这是更基本的。
我上次更改了配置文件,将log_path=/old/path更改为log_path=/new/path,所以我直接使用了这个。
超级简单。

处理特殊字符非常重要!在您的示例中,原始 sed\"s/string 包含 '/' ,替换字符串包含 '/\" 我已经尝试过。
上次我处理一个网站源代码,URL 中包含斜杠 /。
我想将所有 http://example.com/old 更改为 http://example.com/new 但仅使用 s// 就卡住了,不得不逃脱。
否则,sed 会感到困惑并认为第一个 / 是模式分隔符。

定制分隔线救了我的命。
在文件中,替换内容中有多个斜体层。
使用 s// 非常复杂。
我直接改成s|...|...|并使用竖线 |作为分隔符,这立即使其变得更加清晰。
你的那个问号?我以前用过,确实可以解决某些情况。

全局替换加g,这一点应该黑板!上次我更改代码时,变量名称从 temp 更改为 temp_final。
如果不加g,只会改变每行的第一个速度,其余的都不会改变。
只需加个g,依次替换所有temp即可,省事!如果没有这个 g,我可能需要运行 sed 几次。

行首和行尾的^和$操作也很常用。
我经常在脚本中使用 sed 's/^.$//' 来清除注释行或在文件头中添加版权信息,例如 sed -i filename '1 s/^/Copyright (c) 2 02 3 .../'。
直接将其添加到行首或行尾尤其方便。

行范围替换规格功能非常实用。
上次修复 bug 时,只有一个函数有问题,即某段代码的第 1 0 行和第 1 5 行之间。
我直接使用 sed '1 0,1 5 s/错误逻辑/正确逻辑/g' 只更改这些行而不影响其他代码。
它比逐行搜索要高效得多。
你的$2 表示从第二行到最后一行,我也经常使用它。

多个替换规则用分号分隔;我遇到了这个陷阱。
记得有一次我想同时改变文件头和文件尾,写成s/^/start/;s/$/end/,但是只有第一个生效,因为第一个执行完之后命令就结束了。
后来我学会了使用 sed -e 's/^/start/' -e 's/$/end/' 单独运行它们,或者使用 sed 's/^/start/;s/$/end/g' (尽管在这种方式输入时你必须注意 g 的对齐方式)。
简而言之,确保每一次替换都完成。

保存替换结果。
您提到的两种方法都是正确的。
我一般使用 > 重定向,比如 sed 's/old/new/g' input.txt> 输出.txt。
但有时如果想直接编辑原始文件,请使用-i,例如 sed -i 's/old/new/g' input.txt。
但使用 -i 时要小心。
如果输入错误的命令,数据将会丢失。
正是因为上次,我才知道更改后所有重要字段都被删除了。
我很担心。

总的来说,sed的替换功能非常强大,但是使用时要注意语法细节,特别是转义符、分隔符和g扩展名。
熟能生巧,多加练习。
您有任何具体问题吗?