sed 命令 a 期望 \ 后跟文本

时间:2021-05-13 21:46:58

标签: bash sed

我正在尝试在配置文件中添加一个属性,直接在描述该属性的注释下方。这是我的测试文件:

  # Filename of SSL Certificate

  # Filename of SSL RSA Private Key

  # Filename of SSL Certificate Chain
  ## ssl_certificate_chain=

我想直接在第一条评论下添加 ssl_certificate=/etc/hue/conf/https.cert。我的第一个天真的方法是只替换评论。但是,这不起作用,因为第三条评论中的文本也发生了变化,直到“链”文本。

所以我被困在使用什么 sed 选项上。我曾以多种方式尝试过 a 命令,但我对这样做还很陌生,围绕此 a 命令的大量类似问题让我走上了错误的道路,我认为。这是我的尝试。任何帮助表示赞赏。任何与此类似的问题已得到解答,请指出。我今天找了一段时间。

由于替代值中的斜线而使用 , 作为分隔符

  1. "a,# Filename of SSL Certificate,ssl_certificate=/etc/hue/conf/https.cert,"

结果:

  # Filename of SSL Certificate
,# Filename of SSL Certificate,ssl_certificate=/etc/hue/conf/https.cert,

,# Filename of SSL Certificate,ssl_certificate=/etc/hue/conf/https.cert,
  # Filename of SSL RSA Private Key
,# Filename of SSL Certificate,ssl_certificate=/etc/hue/conf/https.cert,

,# Filename of SSL Certificate,ssl_certificate=/etc/hue/conf/https.cert,
  # Filename of SSL Certificate Chain
,# Filename of SSL Certificate,ssl_certificate=/etc/hue/conf/https.cert,
  ## ssl_certificate_chain=
,# Filename of SSL Certificate,ssl_certificate=/etc/hue/conf/https.cert,

,# Filename of SSL Certificate,ssl_certificate=/etc/hue/conf/https.cert
  1. "s,# Filename of SSL Certificate,a ssl_certificate=/etc/hue/conf/https.cert,"

结果:

  a ssl_certificate=/etc/hue/conf/https.cert

  # Filename of SSL RSA Private Key

  a ssl_certificate=/etc/hue/conf/https.cert Chain
  ## ssl_certificate_chain=

1 个答案:

答案 0 :(得分:1)

你走在正确的道路上。您只需要匹配包括行尾 ($) 在内的整行。

sed '\,# Filename of SSL Certificate$,a ssl_certificate=/etc/hue/conf/https.cert'

这将保留您的评论并将 SSL-cert 路径放在后面。