【问题标题】:perl: how to save only editted changes from editted file (withou deleting it)?perl:如何仅保存已编辑文件中的已编辑更改(不删除它)?
【发布时间】:2020-08-14 02:58:45
【问题描述】:

我从 STDIN 编辑一个文件: $ perl -wlne 'if ((/start here/ .. /end here/)&&(/line to change/)) { print s/match/CHANGE/r }' somefile.txt

我添加了-i 选项,但只剩下文件中的更改(一行),其他所有内容都被删除了。那么如何只保存line to change 中正则表达式的更改而不删除其他所有内容?

【问题讨论】:

  • Re "如何打印对当前编辑文件的更改?",你说你是这样做的,所以我不明白这个问题。

标签: regex shell perl


【解决方案1】:

这是需要的:

perl -wlpe 's/match/CHANGE/
              if (/start here/ .. /end here/)
                  && /line to change/' somefile.txt

-p 负责打印。

对结果满意后,您可以添加 -i 进行就地编辑。

【讨论】:

  • 语法是SIMPLE_STATEMENT if EXPR;,而不是SIMPLE_STATEMENT if ( EXPR );。固定的。还删除了您添加的无关块。
猜你喜欢
  • 2020-04-04
  • 2011-09-07
  • 1970-01-01
  • 2022-06-17
  • 1970-01-01
  • 2020-08-28
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多