用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

目录
相关文章
|
5天前
|
Unix Linux Perl
用sed将每一行中的old_text替换为new_text
用sed将每一行中的old_text替换为new_text
11 3
|
5天前
|
Unix Shell Linux
sed的替换操作
sed的替换操作
21 3
|
9月前
|
Ubuntu Linux Perl
如何使用 sed 替换文件中的字符串?
如何使用 sed 替换文件中的字符串?
162 0
|
9月前
|
Shell
Shell 删除多余重复的字符(tr -s)
Shell 删除多余重复的字符(tr -s)
109 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' 文件名
1757 0
|
PHP Perl
sed 多行替换,多行模式处理字符串;一次替换
作者:凨 例: 需求:sed 替换多行(2到6行)替换为空,且返回系统配置信息 <?php /**CustomConfigurationStart*/ $c=require APP_PATH.'Common/Conf/config-custom.php'; /*COOKIES,SESSION域*/ $domain=preg_replace('/(.*\.|.*\/\/)?(
3316 0
|
Shell Linux C++
linux shell之paste合并文件和找到匹配的文件里面替换内容(find和-exec或xargs组合)
linux shell之paste合并文件和找到匹配的文件里面替换内容(find和-exec或xargs组合)
189 0
|
Oracle 关系型数据库 Shell
[20180131]bash变量替换与截取.txt
[20180131]bash变量替换与截取.txt --//bash编程经常用到变量替换与截取,经常记不住,做一些例子说明: $ a=1a1b1c1d $ echo $a 1a1b1c1d $ echo ${a##*1} d $ echo ${a...
1155 0