Sed:添加到特定行的末尾

时间:2016-02-02 01:20:21

标签: linux unix sed latex ascii

尝试编写Sed脚本以将手册页转换为latex。 需要在每行的末尾添加一个空格和\\,其第一个非空白字符是“+”或“ - ”。我做了什么:

    /[. \t]-[a-zA-Z]/s/$/ \\\\/
    /[. \t]+[a-zA-Z]/s/$/ \\\\/

我认为在遇到“ - ”或“+”之前,手册页有空格或空格选项卡,所以我将空格和制表符添加到地址中。我的问题是它将\\添加到每行的末尾,该行带有带字符的“ - ”或“+”。示例输出:

            -daystart \\
                    Measure times (for -amin, -atime, -cmin, ctime, \\
                    -mmin, and -mtime) from the beginning of today \\
                    rather than from 24 hours ago.

它必须在单个Sed脚本中才能将多个手册页转换为乳胶,因此行号不能用作地址。

2 个答案:

答案 0 :(得分:0)

如果您只想匹配行开头的-+(在某些空格之后),那么您可以这样做:

sed '/^[. \t]-[a-zA-Z]/s/$/ \\\\/' inputfile

注意^,它与行的开头匹配。

此外,我认为您可以删除此部分[a-zA-Z],或者为什么需要它?然后,您还可以使用-同时搜索+[-+]

sed '/^[. \t][-+]/s/$/ \\\\

但也许我误解了你想要做什么。

答案 1 :(得分:0)

以下是否适用于您?

/^[. \t][. \t]*[-+][a-zA-Z]/s/$/ \\\\/