用sed只替换每一行的第一个old_text

简介: 用sed只替换每一行的第一个old_text

在Linux中,你可以使用sed命令配合正则表达式来实现这个需求。下面是一个示例:

sed 's/old_text/new_text/;T' file.txt

这里的命令含义是:

  • s/old_text/new_text/:这是替换命令,它会查找每一行中的第一个old_text并替换为new_text
  • ;T:如果前面的s命令执行了替换(即该行存在old_text并且成功替换了),则跳过后续命令;否则(即该行不存在old_text或者已经替换过第一个old_text了),继续处理下一行。

这样就实现了只替换每一行的第一个old_text

然而,需要注意的是,如果old_text包含特殊字符,可能需要进行转义。例如,如果old_text包含斜线(/),你需要写成\/old_text/。如果它包含反斜杠(\),则需要写成\\old_text

另外,如果你的sed版本不支持;T组合,可以使用以下方式:

sed -E '0,/(old_text)/ s//new_text/' file.txt

这里 -E 参数表示使用扩展正则表达式,0,/(old_text)/ 表示从行首到第一个 old_text 之间的范围,然后在这个范围内执行替换操作,因此只会替换每行的第一个 old_text

目录
相关文章
|
4月前
|
Linux
echos-tail重定向符,echo 命令可以输出相应的字符串 ,echo hello,echo `pwd`执行命令,输出路径,否则就是字符串了,单个>表示的是将左侧的命令覆盖写入到右侧指定的文件当
echos-tail重定向符,echo 命令可以输出相应的字符串 ,echo hello,echo `pwd`执行命令,输出路径,否则就是字符串了,单个>表示的是将左侧的命令覆盖写入到右侧指定的文件当
|
6月前
|
Unix Linux Perl
用sed将每一行中的old_text替换为new_text
用sed将每一行中的old_text替换为new_text
45 3
|
6月前
|
设计模式 算法 Java
替换if...else的锦囊妙计
替换if...else的锦囊妙计
|
6月前
|
Unix Shell Linux
sed的替换操作
sed的替换操作
51 3
|
Ubuntu Linux Perl
如何使用 sed 替换文件中的字符串?
如何使用 sed 替换文件中的字符串?
210 0
|
Shell 开发工具 Perl
Shell中的文本处理工具、cut [选项参数] filename 说明:默认分隔符是制表符、awk [选项参数] ‘/pattern1/{action1}filename 、awk 的内置变量
Shell中的文本处理工具、cut [选项参数] filename 说明:默认分隔符是制表符、awk [选项参数] ‘/pattern1/{action1}filename 、awk 的内置变量
Shell中的文本处理工具、cut [选项参数] filename 说明:默认分隔符是制表符、awk [选项参数] ‘/pattern1/{action1}filename 、awk 的内置变量
|
Perl
Sed 删除包含某些字符串的行
sed -i '/关键字符/d' 文件名
2063 0
|
PHP Perl
sed 多行替换,多行模式处理字符串;一次替换
作者:凨 例: 需求:sed 替换多行(2到6行)替换为空,且返回系统配置信息 <?php /**CustomConfigurationStart*/ $c=require APP_PATH.'Common/Conf/config-custom.php'; /*COOKIES,SESSION域*/ $domain=preg_replace('/(.*\.|.*\/\/)?(
3415 0
|
Shell Perl Linux
去掉Enter字符(\r)的几个方法
数据:test.txt: f1:f2:f3:0#1 Shell:   #!/bin/bash while read line do echo $line result1=$(echo $line|awk -F ':' '{print $4}' ) echo $re...
1362 0
|
Shell Linux C++
linux shell之paste合并文件和找到匹配的文件里面替换内容(find和-exec或xargs组合)
linux shell之paste合并文件和找到匹配的文件里面替换内容(find和-exec或xargs组合)
233 0