【问题标题】:awk or sed: how to modify based on previous and next lines [closed]awk 或 sed:如何根据上一行和下一行进行修改 [关闭]
【发布时间】:2019-09-04 05:57:40
【问题描述】:

我有一个类似下面的文件

* jhasjdhjh

sample1

* oioieoirer

sample2

* jsdhfjhdf
 * ppppppp
sample3
 * iouiuiouo

我希望它是

* jhasjdhjh

 * sample

* oioieoirer

 * sampel2

* jsdhfjhdf
 * ppppppp
     * sample3
 * iouiuiouo

所以sample1,sample2我们要添加*(空间星号空间),因为上面一行和下面一行都有*(星号空间)

sample3 我们要添加 *(5 个空格和星号),因为前一行有(空格和星号)

所以我必须根据它们的星号检查上一行和下一行,然后我必须决定在当前行上放什么。

【问题讨论】:

  • 欢迎来到 SO。 Stack Overflow 是一个专为专业和热情的程序员准备的问答页面。将您自己的代码添加到您的问题中。您应该至少展示自己为解决这个问题所做的研究。
  • 赛勒斯。这个问题与我没有任何线索的上一行和下一行状态有关。我使用 sed 替换特定文本,但不是比较替换

标签: regex awk sed


【解决方案1】:

如果数据在 'd' 中,试试 gnu sed,

 sed -Ez 's/(\s*\*\s*\S+\s*\n)(\S+)/\1  *\2/g ' d

【讨论】:

    猜你喜欢
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多