我需要修改当前目录与所有子目录中的rst文件,关键是要找到rst文件中带有下面内容的:
.. role:: line5green
:class: line5green
类似的内容有很多,比如:
.. role:: text9
:class: text9
或者:
.. role:: dark
:class: dark
等等。
共同的内容是前缀部分,即:
.. role::
:class:
把所有rst文件中带有这两行内容的 行 删除,需要怎么写find命令?
sed '/^.. role:: \(.*\)/N; s/^.. role:: \(.*\)\n :class: \1//; T; d'
GNU sed only.
1 个赞
这个命令运行以后,终端没有变化,感觉像是命令在等待。我等了大概7-8分钟,按了ctrl+c。
sed的版本:
$ sed --version
sed (GNU sed) 4.9
由 Debian 打包
Copyright (C) 2022 Free Software Foundation, Inc.
许可证 GPLv3+:GNU 通用公共许可证第 3 版或更新版本<https://gnu.org/licenses/gpl.html>。
本软件是自由软件:您可以自由修改和重新发布它。
在法律范围内没有其他保证。
由 Jay Fenlason、Tom Lord、Ken Pizzini、
Paolo Bonzini、Jim Meyering 和 Assaf Gordon 编写。
本 sed 程序构建时含有 SELinux 支持。
此系统已禁用 SELinux。
GNU sed 主页:<https://www.gnu.org/software/sed/>。
使用 GNU 软件的一般性帮助:<https://www.gnu.org/gethelp/>。
请将错误报告发送至:<bug-sed@gnu.org>。
呃,你自己接管道或者文件名呀……
哦,你要修改一堆 .rst 的话,用 zsh 可以这样:sed -i .... **/*.rst
。
2 个赞