2

我有以下文字:

在做任何事情之前,curses 必须被初始化。这是通过调用:func:`~curses.initscr` 函数来完成的,该函数将确定终端类型,将任何所需的设置代码发送到终端,并创建各种内部数据结构。如果成功,:func:`initscr` 返回一个代表整个屏幕的窗口对象;这通常在相应的 C 变量名称之后称为“stdscr”。

我要更换:

:func:`~诅咒。初始化`

和:

`initscr https://docs.python.org/3/library/curses.html#curses.initscr `_

我尝试了以下 sed 规则:

's@ :func:`~curses\.\(.*\)`@ `\1 <https://docs.python.org/3/library/curses.html#curses.\1>`_ @g'

但结果如下:

在做任何事情之前,curses 必须被初始化。这是通过调用 `initscr` 函数来完成的,该函数将确定终端类型,将任何所需的设置代码发送到终端,并创建各种内部数据结构。如果成功,:func:`initscr` 返回一个代表整个屏幕的窗口对象;这通常称为 ``stdscr` <https://docs.python.org/3/library/curses.html#curses.initscr` 函数,它将确定终端类型,将任何所需的设置代码发送到终端,以及创建各种内部数据结构。如果成功,:func:`initscr` 返回一个代表整个屏幕的窗口对象;这通常在相应的 C 变量名称之后称为 ``stdscr`>`_。::

4

1 回答 1

1

利用

sed -E 's@ :func:`~curses\.([^`]+)`@ `\1 <https://docs.python.org/3/library/curses.html#curses.\1>`_ @g' file

演示

解释

NODE                     EXPLANATION
--------------------------------------------------------------------------------
   :func:`~curses          ' :func:`~curses'
--------------------------------------------------------------------------------
  \.                       '.'
--------------------------------------------------------------------------------
  (                        group and capture to \1:
--------------------------------------------------------------------------------
    [^`]+                    any character except: '`' (1 or more
                             times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
  )                        end of \1
--------------------------------------------------------------------------------
  `                        '`'
于 2020-08-17T20:05:35.623 回答