regex - Uncomment a block of text with awk or sed -


assuming have text file example:

lorem ipsum dolor sit amet, nullam euismod tractatos id mel, has integre ornatus  feugait ad. in eum enim putent fierent. quo melius persecuti conceptam eu, ne probo  autem inciderint quo, ius et atqui diceret. causae prompta corpora ex ius. atqui  aperiri in duo, ex pro reque utinam.  sea ne prima falli petentium. ut has ancillae omnesque lucilius, vim ex alia  audire contentiones. error possit singulis @ his. ne purto soleat ius, detracto  sententiae mel ne. te eos regione detracto, eam quas accumsan detracto an.    # lorem ipsum dolor sit amet, nullam euismod tractatos id mel, has integre ornatus    # feugait ad. in eum enim putent fierent. quo melius persecuti conceptam eu, ne probo    # autem inciderint quo, ius et atqui diceret. causae prompta corpora ex ius. atqui    # aperiri in duo, ex pro reque utinam.    # comment   # @ debet expetenda sed, sed te case ceteros adolescens. ad sea facer minim tempor,    # eam facilisi definitiones ei, vix vidit erant dissentias et. eum fierent scaevola    # suscipiantur eu. eum essent platonem interesset ex, ut idque vidisse nam, labores    # intellegam comprehensam eos et. eu eum appetere sententiae percipitur, ad eam hinc    # impetus sententiae, pro duis consetetur reprehendunt in. id percipit iracundia    # abhorreant est.    # sea ne prima falli petentium. ut has ancillae omnesque lucilius, vim ex alia    # audire contentiones. error possit singulis @ his. ne purto soleat ius, detracto    # sententiae mel ne. te eos regione detracto, eam quas accumsan detracto an.  lorem ipsum dolor sit amet, nullam euismod tractatos id mel, has integre ornatus  feugait ad. in eum enim putent fierent. quo melius persecuti conceptam eu, ne probo  autem inciderint quo, ius et atqui diceret. causae prompta corpora ex ius. atqui  aperiri in duo, ex pro reque utinam.  sea ne prima falli petentium. ut has ancillae omnesque lucilius, vim ex alia  audire contentiones. error possit singulis @ his. ne purto soleat ius, detracto  sententiae mel ne. te eos regione detracto, eam quas accumsan detracto an. 

i want use either awk or sed uncomment next 3 lines after line # comment ends looking this:

  # comment   @ debet expetenda sed, sed te case ceteros adolescens. ad sea facer minim tempor,    eam facilisi definitiones ei, vix vidit erant dissentias et. eum fierent scaevola    suscipiantur eu. eum essent platonem interesset ex, ut idque vidisse nam, labores    # intellegam comprehensam eos et. eu eum appetere sententiae percipitur, ad eam hinc    # impetus sententiae, pro duis consetetur reprehendunt in. id percipit iracundia    # abhorreant est. 

please explain solution can learn , understand. knowledge of awk , sed still @ beginner level.

awk counts lines in nr variable.

awk '/# comment/ {n=nr}      n && nr-n && nr-n<=3 {sub("# ?","")}      {print}' 

n=nr captures number of line # comment occurs

zero equivalent false, , non-zero true in awk, in conditional: 1) n prevents uncommenting starting @ beginning of file, 2) nr-n prevents uncommenting starting on # comment line, , 3) nr-n<=3 defines lines uncommenting occur.

function sub awk's once-only string substitution. string substituted "", i.e. removed, comment symbol # followed 0 or 1 spaces -- ? regular expression quantifier "optional" (zero or one).


Comments

Popular posts from this blog

php - Invalid Cofiguration - yii\base\InvalidConfigException - Yii2 -

How to show in django cms breadcrumbs full path? -

ruby on rails - npm error: tunneling socket could not be established, cause=connect ETIMEDOUT -