使用sed替换多个文件中的同一文本行

奇迹警告

在当前目录(projDir)中,大约有41个文件夹,如下所示:

  • ProgOneDir
  • ProgTwoDir
  • ProgThreeDir
  • ...
  • ProgFortyOneDir

...等等(我没有提出命名方案,而且我不是系统管理员,所以请不要对他们大喊大叫)。

在每个子文件夹中,都有我需要编辑的README.md文件。我不想使用每个sed文件夹并在那里编辑文件,而是想使用sed命令来执行此操作。这些文件始终命名为README.md

我正在运行CentOS7

我当前的命令是:

find . -name 'README.md' -exec sed -i -e 's/./makeprog $MAKE_FLAGS CFLAGS="-I/usr/local/include/libtool" OFLAGS="-L/usr/local/lib"/./makeprog/g' {} \;

本质上,我需要切换:

./makeprog $MAKE_FLAGS CFLAGS="-I/usr/local/include/libtool" OFLAGS="-L/usr/local/lib

./makeprog

有人可以协助吗?我得到的错误是:

sed: -e expression #1, char 43: unknown option to `s'

我已经看过了:

我相信我的错误是由./command引起的。我已经遵循将所有/切换为+的建议,但是仍然无法正常工作,因为出现了以下错误:

sed: -e expression #1, char 110: unterminated `s' command

谢谢。

格伦·杰克曼

您的问题是您使用斜杠作为s///命令的分隔符,但是将斜杠放入模式中。您可以选择一个没有出现在模式中的分隔符。

假设您当前的目录是projDir,并且只有一个调用makeprog:

sed -i -E 's#(./makeprog) .*#\1#' */README.md

要么

perl -i -e 's{./makeprog\K.*}{}' */README.md

如果要具体匹配该确切的行,则:

# are you missing a trailing double quote?
line='./makeprog $MAKE_FLAGS CFLAGS="-I/usr/local/include/libtool" OFLAGS="-L/usr/local/lib'
sed -i -E "s#$line#./makeprog#" */README.md

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从多个 php 文件更新同一文本文件中的一行

从文件中复制纯文本行,并将其附加到带有中线前缀的同一文件中,或删除中线前缀

从同一文件中绘制多个系列

如何使用sed通过行号将同一文件中的第N行替换为第M行

如何使用ArduinoJson从同一文件中检索多个NDJSON对象?

使用 Robot Framework 在同一文件中测试多个用户登录

如何使用htaccess避免php中同一文件的多个路径?

如何根据行的第一个单词替换同一文件中的多个模式?

替换同一文本文件中的行,而无需刷新Java中的其他内容

sed替换第n次出现并保存到同一文件

使用SED从文件中删除一行,然后将输出重定向到同一文件

是否可以在同一文件中的同一名称空间下使用多个类

搜索并替换同一文件中的字符串,并计算替换的数字

尝试使用linq查询同一文件夹中的许多文本文件

使用BeautifulSoup进行XML解析:在同一文档中检索具有相同ID的多个文本内容

如何使用Gulp解压缩同一文件夹中的多个文件

使用sed / awk / etc将一个文本文件中的奇数行替换为另一文本文件中的相应奇数行

在同一文本文件的特定间隔中添加/插入不同的文本?

同一文件的多个文件句柄

忽略同一文件夹中多个文件中的字符

XML-如何定义和使用要在同一文件中多个位置引用的节点

使用 react-native-signature-capture 保存在同一文件中的多个签名

Bash-在同一文件中查找并替换为新行

将值替换并存储在同一文件中,shell

sed在同一文件上重复使用

如何从Java Swing中多次使用的同一文本字段中获取文本

使用python在同一文件中用管道定界符替换逗号

熊猫在多个文件上合并并保存在同一文件中

多个用户使用PHP一次写入同一文件