awk或sed:如何根据上一行和下一行进行修改

时间:2019-04-13 19:23:38

标签: regex awk sed

我有一个如下文件

* jhasjdhjh

sample1

* oioieoirer

sample2

* jsdhfjhdf
 * ppppppp
sample3
 * iouiuiouo

我希望成为

* jhasjdhjh

 * sample

* oioieoirer

 * sampel2

* jsdhfjhdf
 * ppppppp
     * sample3
 * iouiuiouo

因此sample1和sample2我们要添加*(星号空间),因为上一行和下一行具有*(星号空间)

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

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

1 个答案:

答案 0 :(得分:0)

如果数据为“ d”,请尝试使用gnu sed,

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