我已经解析了一个文件,但是有一些问题,一个快速的方法是用它下面的行替换空行,那么我该怎么做
像下面的文件
apple
banana
big
sig
cake
应该转换为
apple
banana
banana
big
sig
cake
cake
我已经解析了一个文件,但是有一些问题,一个快速的方法是用它下面的行替换空行,那么我该怎么做
像下面的文件
apple
banana
big
sig
cake
应该转换为
apple
banana
banana
big
sig
cake
cake
与
sed
:/./! action
对不( ) 包含任何单个字符的行(是匹配任何单个字符的正则表达式运算符)运行操作(此处检索n
ext 行并将p
其 rint )。!
.
一些
sed
实现还有一个-i
或-i ''
选项来就地编辑文件。你可以
awk
用它的getline()
功能来做到这一点。该命令通过选择文本文件中的空行来工作,!NF
即,这意味着那些为空的行(行内的字段数为 0)。使用该getline()
函数,我们从空行中获取下一个直接行并存储在变量中nxt
。然后内部的部分
{..}
构造一个将变量组合在一起的行,一个嵌入的换行符(与 的字符串连接ORS
)和变量再次返回。需要第二个附加,因为getline()
默认情况下 call 将行指针前进一级。请参阅如何使用 awk 永久更改文件?(“就地”编辑,如“sed -i”)动态更改文件。或者
这给出了相同的输出。
这将打印每一行 1 次,加上对应于其上方空白行数的次数。空白行计入变量
r
。使用正则表达式检测空行
^$
,但您也可以使用length == 0
orNF == 0
。尝试使用以下 sed 命令组合,效果很好
输出
您可以按以下方式执行此操作: