【问题标题】:Bash: Find a word in file and add text after itBash:在文件中查找一个单词并在其后添加文本
【发布时间】:2020-05-26 09:05:27
【问题描述】:

我正在尝试构建自己的 bash 脚本来安装 LEMP (nginx mariadb php)。 我已经设法完成了,但我被困在需要添加“index.php”文本的部分 到索引行@ /etc/nginx/sites-avaliable/default。

我已经尝试使用“sed”并且非常接近但还没有。

sed '/\index.htm/i index.php' input /etc/nginx/sites-available/default

这是我得到的最接近的

我也尝试过像这样替换 index.htm 文件:

sed 's/index.htm/index.php' /etc/nginx/sites-available/default

感谢您的帮助! :)

【问题讨论】:

  • 显示您对sed 的尝试,我们将帮助您解决问题。
  • sed '/\index.htm/i index.php' input /etc/nginx/sites-available/default -- 这是我得到的最接近的
  • 我也尝试过像这样替换 index.htm 文件:sed 's/index.htm/index.php' /etc/nginx/sites-available/default
  • 请用此信息编辑问题,不要放在 cmets 中。
  • 你需要用> outputfile重定向输出

标签: bash sed manipulate


【解决方案1】:

如果你想在输入文件中替换,你必须使用-i 选项。否则sed 将输出发送到标准输出。

s 命令需要一个终止分隔符。

sed -i 's/index.html/index.html index.php/' /etc/nginx/sites-available/default

【讨论】:

  • 谢谢!有没有办法在 index.html 之后附加 index.php 而不是替换它?
  • 顺便说一句,sed -i 只是用 php 替换了 'htm' 并留下了 'l' (of html) 所以这不起作用:(
  • 改成index.html
  • 原始文件中究竟有什么?我假设您知道要替换的内容,并且只需要知道正确的语法即可。
  • 大声笑我不能。 index.html 必须在这一行并且不能被替换。我正在尝试在它之后添加 index.php 或至少替换 index.html 之后的 index.htm 文件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 2012-10-31
  • 2020-02-01
  • 2010-10-16
  • 1970-01-01
  • 2018-04-24
相关资源
最近更新 更多