首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何不让sed与被替换的第一个参数重叠?

sed是一种流式文本编辑器,常用于在命令行中进行文本处理和替换操作。当使用sed命令进行替换时,可以通过添加分隔符来指定待替换的文本和替换后的文本。但是,如果替换的文本中包含与分隔符相同的字符,会导致sed解析错误或替换结果不符合预期。

为了避免sed与被替换的第一个参数重叠,有以下几种方法:

  1. 使用不常见的分隔符:sed命令允许在替换操作中使用除了常见分隔符(如斜杠“/”)之外的其他字符作为分隔符。通过选择一个不在待替换文本和替换后文本中出现的字符作为分隔符,可以避免重叠的问题。

例如,将句子中的"fox"替换为"dog",可以使用#作为分隔符:

代码语言:txt
复制
sed 's#fox#dog#g' input.txt
  1. 转义特殊字符:如果待替换文本和替换后文本中可能出现与sed分隔符相同的字符,可以使用反斜杠来转义这些特殊字符。这样sed就会将其视为普通字符而不是分隔符。

例如,将句子中的"www.example.com"替换为"www.google.com",可以使用斜杠作为分隔符,并对其中的点进行转义:

代码语言:txt
复制
sed 's/www\.example\.com/www\.google\.com/g' input.txt
  1. 使用变量或引用替换内容:如果待替换的文本较长或包含大量特殊字符,可以将其存储在变量中,并在sed命令中使用引用替换内容。这样可以避免直接在sed命令中写入较长或复杂的替换内容,降低出错的可能性。

例如,假设要将句子中的"hello"替换为一个存储在变量$replacement中的较长文本,可以使用以下方式:

代码语言:txt
复制
replacement="a very long replacement text"
sed "s/hello/${replacement}/g" input.txt

这样可以确保sed命令的第一个参数不会与替换内容发生重叠。

需要注意的是,以上方法适用于常见的sed命令,但如果使用其他工具或编程语言进行文本替换,可能会有不同的处理方式。在具体的场景中,需要根据工具或语言的特性来选择合适的方法进行文本替换。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Bedtools使用简介

求区域之间交集,可以用来注释peak,计算reads比对到基因组区域 不同样品peak之间peak重叠情况。...如何用bedtools其它工具算出这个结果?2. 如果需要比较文件很多,怎么充分利用计算资源? 一个办法是使用for循环, 双层嵌套。...# 双引号后面的 三个相邻冒号 (:::)默认用来传递参数,可多个连写。...# 每个三冒号后面的参数会被循环调用,而在命令中引用则是根据其出现位置,分别用{1}, {2} # 表示第一个三冒号后参数,第二个三冒号后参数。...# # 这个命令可以替换原文档里面的整合和替换, 相比于原文命令生成多个文件,这里对每个输出结果 # 先进行了比对信息增加,最后结果可以输入一个文件中。

4K40

【记忆卡片】Linux sed命令

(^这是正则表达式中表示开头,该符号后面跟就是开头字符串)(参数p表示打印行) $ sed 's/^wangpan/&19850715/' example.file 表示替换换字符串找到后,...替换字符串通过&符号连接给出字符串组成新字符传替换替换字符串,所有以wangpan开头行都会被替换成它自已加19850715,变成wangpan19850715 $ sed -n 's/\...如例子所示,第一条命令删除11至53行,第二条命令用pan替换wang。命令执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令结果。...$ sed '/wangpan/r file' example.file file里内容读进来,显示在wangpan匹配行后面,如果匹配多行,则file内容将显示在所有匹配行下面。...追加到包含test字符串行前面,参数i表示添加指定内容到匹配行前面,sed要求参数i后面有一个反斜杠 $ sed '/test/{ n; s/aa/bb/; }' example.file 如果

1.4K130
  • 笨办法学 Python · 续 练习 9:`sed`

    你甚至可以尝试将一些障碍添加回你流程,看看它如何影响你生产力。 警告 请记住,这是个人指标,而不是任何人分享内容。这些几乎不科学,意味着你仅仅在分析你工作方式中获得一些客观性。...将你实验室笔记看做非常私人记录,并且从不让任何人看到它。 挑战练习 这个练习将比其他练习更复杂,因为我们将要处理更多正则表达式,并实现一个名为sed工具。...通过接受利用正则表达式替换模式串,sed工具能够让你改变文本,然后在接收到每一行中,确定要替换什么。...难点可能在于实现sed表达式格式,所以我建议你用两种方法来实现: Lv1 具有命令行选项,用于最基本sed用法,将一个字符串替换为另一个字符串。...如果我想更改ls输出,以便使用“author”替换名字,我可以这样做: ls -l | sed -e "s/zedshaw/author/g" 然而,sed实力在于使用正则表达式来匹配模式串并替换它们

    25720

    linux实战(一)

    替换s命令 $ sed 's/test/mytest/g' example 在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配test替换成mytest。...$ sed -n 's/\(love\)able/\1rs/p' example love标记为1,所有loveable会被替换成lovers,而且替换行会被打印出来。...如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令结果。...从文件读入r命令 $ sed '/test/r file' example file里内容读进来,显示在test匹配行后面,如果匹配多行,则file内容将显示在所有匹配行下面。...字符串必须用双引号引用,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。这里,逗号作用输出文件分隔符作用是一样,只是后者是空格而已。

    2.2K10

    Linux常用命令09 - sed

    我还将向您展示如何执行递归搜索和替换。 查找和替换字符串sed sed 有几个版本,它们之间有一些函数上差异。...默认情况下一行一行地读取文件,只更改第一次出现SEARCH_REGEX,当提供替换标志时,所有出现情况都将被替换 INPUTFILE 要在其上运行命令文件名 最好在参数周围加上引号,这样 shell...让我看一些示例,说明如何使用 sed 命令搜索文件中文本,并使用其中一些最常用选项和标志替换文件中文本。...正如您可能已经注意到,在前面的示例中,foobar 字符串中子字符串 foo 也替换了。 如果这不是想要行为,请在搜索字符串两端使用单词边界表达式(\b)。 这将确保部分词不匹配。...bin/bash demo foobar number sed 另一个有用特性是,您可以使用匹配模式相对应 & 符号。

    2.1K30

    【数据处理】sed原理及使用举例(快速理解核心)

    参数 sed最后会输出模式空间所有内容(除非指定了-n参数) 变量传递通过-v参数(建议) -e: 支持多个编辑命令 命令执行顺序对结果有影响 (-e)选项允许在同一行里执行多条命令。...如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令结果。...如果没有g标记,则只有每行第一个匹配test替换成mytest。 $ sed 's/test/mytest/g' example #s选项和p标志一起使用表示只打印那些发生替换行。...也就是说,如果某一行开头test替换成mytest,就打印它。 $ sed -n 's/^test/mytest/p' example #&符号表示替换换字符串中被找到部份。...y: 一个字符翻译为另外字符(但是不用于正则表达式) 用法举例 # 从文件读入:r命令 # file里内容读进来,显示在test匹配行后面,如果匹配多行,则file内容将显示在所有匹配行下面

    3.1K546

    Sed..

    文章目录 Sed 选项 参数 sed命令 sed替换标记 sed元字符集 sed用法实例 替换操作:s命令 全面替换标记g 定界符 删除操作:d命令 已匹配字符串标记& 子串匹配标记\1 组合多个表达式...参数 文件:指定待处理文本文件列表。 sed命令 a\ # 在当前行下面插入文本。 i\ # 在当前行上面插入文本。 c\ # 把选定行改为新文本。 d # 删除,删除选择行。...命令中 digit 7,替换成了 7。...命令执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令结果。...里内容读进来,显示在test匹配行后面,如果匹配多行,则file内容将显示在所有匹配行下面: sed '/test/r file' filename 写入文件:w命令 在example中所有包含

    1.6K20

    运维工作中sed常规操作命令梳理

    常用到几个选项参数解释: -n :使用安静(silent)模式。...6)数据搜寻并替换 除了整行处理模式之外,sed 还可以用行为单位进行部分数据搜寻并取代。基本上sed搜寻替代vi相当类似!...(^这是正则表达式中表示开头,该符号后面跟就是开头字符串)(参数p表示打印行) [root@www ~]# sed 's/^wangpan/&19850715/' example.file 表示替换换字符串找到后...,替换字符串通过&符号连接给出字符串组成新字符传替换替换字符串,所有以wangpan开头行都会被替换成它自已加19850715,变成wangpan19850715 [root@www ~]#...只替换每一行第一个s: [root@www ~]# sed 's/s/S/1' my.txt 只替换每一行第二个s: [root@www ~]# sed 's/s/S/2' my.txt 只替换第一行

    98971

    sed:小工具,大用处

    但如果加上-n参数后,则只有经过sed特殊处理那一行(或者动作)才会被列出来。...; p:打印,亦即将某个选择资料印出,通常p会与参数sed-n一起运行; s:替换,可以直接进行替换工作,通常s动作可以搭配正则表达式。...这里省略了-e,也即默认就是在命令行模式,还可以根据关键字进行删除,例如删除含有“CHEN”行: 但是这时文件内容并没有更改,如要是删除原文件内容并保存,可以使用-i参数直接对文件执行命令:...可以使用“\+回车”来增添多行内容,示例如下: ⑵替换显示功能 sed动作命令p可以根据行号显示内容,例如选择显示文件中第5-7行内容: sed动作命令c可以进行整行内容替换,例如将文件第...表示全局,也即每一行进行全部替换,若不加g则只替换找到第一个关键字: sed还可以直接处理文件,在多文库数据处理时,遇到重复barcode情况,常需要进行barcode替换,如下所示: 上面的例子中第一条表示将替换结果保存为新文件

    48620

    linux中最为常用三大文本(grep,sed,awk)处理工具

    默认不会直接修改源文件数据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中数据 3. sed vi 区别 vi 采用是交互式文本编辑模式,你可以用键盘命令来交互性地插入、删除或替换数据中文本...通常 p 会与参数 sed -n 一起运行~只输出替换命令修改过行 s :取代,可以直接进行取代工作. s 动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦! 6....sed ‘s/old/new/’ test 匹配每一行第一个old替换为new 例如,一行数据中有 3 个 A,则只会替换第一个 A; 6.1.2 sed ‘s/is/are/2’ test [局部替换...] sed ‘s/old/new/’ test 匹配每一行第一个old替换为new sed 编辑器只替换每行中第 2 次出现匹配模式 root@ubuntu-admin-a1:/home/sedTest...test [每个字符进行映射替换] 转换命令会对 inchars 和 outchars 值进行一对一映射,即 inchars 中第一个字符会被转换为 outchars 中第一个字符, 第二个字符会被转换成

    6K10

    Linux中sed工具使用

    注:sed命令不对原文件进行改变,除非使用 -i 参数sed命令是一行一行处理 sed命令使用 sed 参数 命令 文件 参数 -f 脚本文件 以选项中指定脚本文件来处理输入文本文件...5-10行内容 sed -n '5,10p' /etc/passwd 以字符为单位替换 02 将文件中root替换为ROOT,只替换每行第一个 sed 's/root/ROOT.../ROOT/2g' /etc/passwd 以行为单位替换 03 将文件1-5行替换为 i very happy sed '1,5c i very happy' test 将以root开头替换为自己定义行...,这里把bash替换为nologin 这里会找到所有含有root行,然后将第一个root换成ROOT sed-n '/root/{s/bash/ROOT/p}' /etc/passwd 如果要将所有的...从文件读入:r 命令 08 file里内容读进来,显示在test匹配行后面,如果匹配多行,则file内容将显示在所有匹配行下面: sed '/test/r file' filename 写入文件

    2.3K10

    sed & awk 第二版学习(五)—— 高级 sed 命令

    、两个参数、一个参数每种情况,并且在成功进行替换时,避免执行进一步替换。...一旦一个替换被执行,其后 t 命令就使控制到达脚本末尾。如果在 .Rh 行上有三个参数,那么第一个替换命令之后 t 命令为真,sed 继续执行下一个输入行。...如果少于三个参数,就不会执行第一个替换,t 命令为假。则将尝试执行下一个替换命令。这个过程将一直重复到所有的可能性都用完为止。...这个脚本设计为可以接受命令行参数第一个参数是搜索模式,所有其它参数都被解释为文件名。整个脚本如下: #!...在单引号对中双引号序列确保包围参数首先 shell 求值,然后再由 sedsed 脚本进行处理。 之后 shift 用于改变位置参数位置。‌

    11410

    linux中sed命令总结

    参数 文件:指定待处理文本文件列表。 sed命令 a\ # 在当前行下面插入文本。 i\ # 在当前行上面插入文本。 c\ # 把选定行改为新文本。 d # 删除,删除选择行。...命令中 digit 7,替换成了 7。...命令执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令结果。...内容读进来,显示在test匹配行后面,如果匹配多行,则file内容将显示在所有匹配行下面: sed '/test/r file' filename 写入文件:w命令 在example中所有包含...也就是把包含testcheck行互换: sed -e '/test/h' -e '/check/x' file 脚本scriptfile sed脚本是一个sed命令清单,启动Sed时以-f选项引导脚本文件名

    3.2K20

    【linux命令讲解大全】081.sed:功能强大流式文本编辑器

    sed选项、命令、替换标记 命令格式 sed [options] 'command' file(s) sed [options] -f scriptfile file(s) 选项 -e 参数 文件:指定待处理文本文件列表...命令中 digit 7,替换成了 7。...命令执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令结果。...里内容读进来,显示在test匹配行后面,如果匹配多行,则file内容将显示在所有匹配行下面: sed '/test/r file' filename 写入文件:w命令 在example中所有包含...也就是把包含testcheck行互换: sed -e '/test/h' -e '/check/x' file 脚本scriptfile sed脚本是一个sed命令清单,启动Sed时以-f选项引导脚本文件名

    23810

    linux下sed正则表达式匹配批量替换文件中内容

    基本语法 sed命令格式:sed [options] 'command' file(s) sed脚本格式:sed [options] -f scriptfile file(s) 参数 参数 完整参数...表示后面的命令对所有没有被选定行发生作用 = 打印当前行号 # 把注释扩展到第一个换行符以前 接下来主要介绍替换功能 替换使用 命令 说明 g 表示行内全面替换 p 表示打印行 w 表示把行写入一个文件...只显示匹配sed -n 's/hello/world/p' hello.txt n和p意思上文有介绍 不再解释。 执行结果: ?...替换文件中内容,并写到文件里 sed -i 's/o/ABC/' hello.txt 执行结果: 执行cat查看文件内容: ? 可以看到虽然替换了,但是只替换第一个匹配到内容。...如果想全部替换到字母'o',就需要使用参数'g'。 全部替换,,并写到文件里 sed -i 's/o/ABC/g' hello.txt ? 执行后,全部'o',都被替换了。

    5.9K10

    Linux三大剑客之sed

    以下例子只打印第一个文件第一行及最后一个文件最后一行,其实也可以理解成sed把三个文件当做一个文件来处理了,依次追加到第一个文件后面。也可以用选项-s来逆转这种操作,即把每个文件分开来处理。...:x:1000:1000::/home/sed:/bin/bash sed -n -s sed -ns这两种写法在本质上是一样。...不加选项-e(脚本,–expression=脚本)或-f(–file,脚本文件),sed使用第一个非选项参数作为脚本,下面的例子中就是以非选项参数作为输入文件。...如果选项-e或-f 用于指定脚本,那么所有的非选项参数当作输入文件。选项-e和-f可以联合使用,能出现多次(所有的单个脚本将被连接起来成为最终有效实例)。...He often told us how he had 以下例子中,把1-3行中he全部替换成one,如果后面不加g,则只替换第一个匹配

    86620

    (转载)Linux之sed匹配第N个进行替换

    全文转载于:http://blog.uouo123.com/post/704.html 这篇文章对我收获巨大,对我对Linux脚本编写有更深层次理解,恐怕这么好东西遗忘,特此全文搬运过来。...文本: aa 88 bb 88 88 cc 88 88 替换第一个88为--: sed '0,/88/s//--/' file sed ':a;N;$!...第二个句子是通过循环把文本全部读进pattern space 然后只替换第一个替换第N[3]个88为--: sed '/88/{x;s/^/./;/^\.\{3\}$/{x;s/....第二个命令和上面第一个其实是一样原理,全部读入文本后统一替换第3个匹配内容。 替换最后一个匹配88为--: sed ':a;/\n88/!...一直到匹配到最后一个88行,继续读取到末行时执行替换,N 因为没有下一行可读,所以会自动中止命令,因为没有 -n 参数会打印 pattern space 里内容到屏幕,所以就不会再执行后面的 ba

    9K40

    常用 linux 命令集锦

    : 1. sed替换基本语法为: sed 's/原字符串/替换字符串/' ------------单引号里面,s表示替换,三根斜线中间是替换样式,特殊字符需要使用反斜线"\"进行转义...替换字符串?' 4. 可以在末尾加g替换每一个匹配关键字,否则只替换每行第一个,例如: # 替换所有匹配关键字 sed 's/原字符串/替换字符串/g' 5....  #替换第2行 sed '$s/原字符串/替换字符串/g' #替换最后一行 sed '2,5s/原字符串/替换字符串/g' #替换2到5行 sed '2,$...oldstring/newstring/g" `grep oldstring -rl yourdir` 7. sed处理过输出是直接输出到屏幕上,使用参数"i"直接在文件中替换。...# 替换文件中所有匹配项 sed -i 's/原字符串/替换字符串/g' filename 8.

    4.5K10
    领券