shell - 如果文本不存在,SED 脚本如何在行号处插入行?

标签 shell ubuntu nginx sed linode

我有一个 sed 脚本,它会在某一行插入文本行。

这是我的 sed 脚本:

  • 20i - 行号
  • \ - 插入新行,行号中有一些内容。
  • 从'./newpage/index'导入NewPage; - 插入行中的文本行。

file - 文本所在的文件。

sed -i "20i \ import NewPage from './newpage/index'; " file

我想要实现的是:能够检查文档中是否存在关键字“NewPage” -> 而不是不插入 sed 行。

有办法做到这一点吗?

提前致谢, 在

最佳答案

您可以在 bash 中组合使用 grep 和命令以及 ||,如下所示:

grep -c NewPage yourfile || sed -i "20i \ import NewPage from './newpage/index'; " yourfile

它的工作原理如下:

  • 如果第一个命令不成功(查找单词),则执行 || 后的第二个命令
  • 如果第一个命令成功,则跳过第二个命令。

关于shell - 如果文本不存在,SED 脚本如何在行号处插入行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41941921/

相关文章:

linux - K8s 'calico' pod 未启动 : "Failed to create default IPv4 IP pool: 10.244.0.0/16 error=resource does not exist:"

qt - 在 Kiosk 模式下无法使用键盘

php - Apache/xampp 无法在 ubuntu 端口 80 上运行

django - 在其他文件夹中创建 uWSGI Socket?

linux - sed 不像其他 linux 命令那样显示退出状态

linux - 如何在linux终端上只打印txt文件?

java - NGINX 与 Tomcat 配置

php - 更改 Windows 上 Composer 使用的 PHP 版本

shell - 使用 TCL 的 tk_getOpenFile 压缩多个文件

linux - 在远程使用 ssh 命令列出选定文件时需要帮助