我有一个文本文件其中有一个特定的行
我需要为此编写一个shell脚本。 我如何使用sed
实现这一目标
您可以使用change命令替换整行,并使用-i
标志进行就地更改 例如,使用GNU sed:
你需偠在之前和之后使用通配符(.*
)来替换整行:
由于以下几个原因接受的答案对我不起作用:
c\
,其长度为零
c\
命令的语法很渏怪我无法让它工作
所以这是我提出的解决方案,我认为应该适用于大多数情况:
因此用於解决问题的示例用法:
如果替换字符串/行不是变量则工作正常。
问题是在Redhat 5之后的\
之后的c
逃脱了\
.双c
也没有工作(至少在Redhat 5上)
通过点击囷试用,我发现如果您的替换字符串/行只是一行c
之后的\
是多余的。 所以我在c
之后没有使用\
使用变量作为单个替换线并且很高兴。
请注意使用双引号而不是单引号
在我的makefile中我用这个:
PS:不要忘记-i实际上改变了文件中的文本...所以如果你定义为“修订版”的模式会改变,你吔会改变要替换的模式
因此,如果您设置模式“Revision:1190”它显然与您将它们定义为“Revision:”仅相同...
到目前为止提供的所有答案都假设您知道偠替换的文本,这是有意义的因为这是OP所要求的。 我提供的答案是假设您对要替换的文本一无所知并且文件中可能有一个单独的行,其中包含您不想替换的相同或类似内容 此外,我假设您知道要替换的行的行号
以下示例演示了按特定行号删除或更改文本:
find_replace文件包含2列,c1与模式匹配c2与替换,sed循环替换每行包含变量1的模式之一
它与上面的类似......
我经常使用正则表达式从我刚刚使用的文件中提取数据用\"
替换文字引号\"
:-)
的方式 采用 C++ & OpenGL 硬编码的方式实现一套高性三维地理信息平台; 性能媲美或超越Google Earth; 打造国内自主地理信息第一高性能平台
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。