1

我知道如何在像这个答案ex这样的语法中使用编辑器来对文件进行小的编辑。

例如,如答案中所述,假设我的文件内容如下:-

$ cat input-file
patternGoingDown
foo
bar
foo
bar

使用 运行命令ex,例如

$ printf "%s\n" '/patternGoingDown' 'd' '/foo' 'n' 'put' 'wq' | ex file
$ cat file
foo
bar
foo
patternGoingDown
bar

patternGoingDown在第二次出现foo. 我的要求是采用类似的逻辑在模式之后增加一个数字。

例子:-

$ cat input-file
The number is now number(60)

是否可以使用ex编辑器将数字从60增加到61喜欢

$ cat input-file
The number is now number(61)

虽然有一个前编辑帮助页面可用,但我不知道如何

  1. 在搜索模式之后解析下一个字符,number在这种情况下
  2. 使用编辑器时61我通常可以通过的增量。Ctrl+Avi

我知道这项工作还有其他工具,但我特别需要使用ex我提到的语法中的编辑器。

4

1 回答 1

1

这很棘手,因为 Vim 并不真正适合这个。awk 是,但 POSIX awk 没有到位,所以你必须同时使用:

ex -sc '%!awk "\
{\
  match(\$0, /[[:digit:]]+/)\
  j = substr(\$0, RSTART, RLENGTH)\
  sub(j, ++j)\
}\
1\
"' -cx file
于 2016-11-18T01:29:11.580 回答