gpt4 book ai didi

linux - 添加然后删除行到另一行,只有当它不包含字符时

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:11 25 4
gpt4 key购买 nike

在我的文本文件中,一组中有 6 行,由两个空行分隔。我已将每一行的行号打印到文本文档中。

    365:--------------------------------------------------------------------------------
366:--------------------------------------------------------------------------------
367:--------------------------------------------------------------------------------
368:--------------------------------------------------------------------------x-----
369:--------------------4-----------------------------------------------------------
370:--0-----------------------------------------------------------------------------
371:
372:
373:--------------------------------------------------------------------|
374:--------------------------------------------------------------------|
375:------------0--------2--------3h----2h----0-----2-------------------|
376:---2-----------------------------------------------------2----------|
377:--------------------------------------------------------------------|
378:--------------------------------------------------------------------|

目前只有 80 个字符打印到一行,因此其余数据在下一组中继续。比如365行对应373行。

对于不包含竖线的行(即第 365-370 行),我试图 1) 追加 8 行以外的行,然后 2) 在打印后删除追加的行。

因此,理想情况下:

    365:----------------------------------------------------------------------------------------------------------------------------------------------------|
366:----------------------------------------------------------------------------------------------------------------------------------------------------|
367:--------------------------------------------------------------------------------------------0--------2--------3h----2h----0-----2-------------------|
368:--------------------------------------------------------------------------x--------2-----------------------------------------------------2----------|
369:--------------------4-------------------------------------------------------------------------------------------------------------------------------|
370:--0-------------------------------------------------------------------------------------------------------------------------------------------------|

我可以使用 grep 隔离不包含竖线的行

grep -vn \| song.txt

我知道 SED 或 AWK 可能是我最好的选择,但我不确定如何从这里开始。

最佳答案

只需按摩此方法以适应:

$ seq 16 | awk 'NR>8{print a[NR%8], $0} {a[NR%8]=$0}'
1 9
2 10
3 11
4 12
5 13
6 14
7 15
8 16

例如假设输入末尾有 2 个空行,使其成为 8 行的 block :

$ awk 'NR>8{print a[NR%8] $0} {a[NR%8]=$0}' file
--------------------------------------------------------------------------------------------------------------------------------------------------|
--------------------------------------------------------------------------------------------------------------------------------------------------|
------------------------------------------------------------------------------------------0--------2--------3h----2h----0-----2-------------------|
-------------------------------------------------------------------------x-------2-----------------------------------------------------2----------|
-------------------4------------------------------------------------------------------------------------------------------------------------------|
-0------------------------------------------------------------------------------------------------------------------------------------------------|

或者如果你在最后一个 block 之后没有那些空行:

$ awk '!NF{next} ++cnt>6{print a[NR%6] $0} {a[NR%6]=$0}' file
--------------------------------------------------------------------------------------------------------------------------------------------------|
-------------------------------------------------------------------------x------------------------------------------------------------------------|
-------------------4----------------------------------------------------------------------0--------2--------3h----2h----0-----2-------------------|
-0-------------------------------------------------------------------------------2-----------------------------------------------------2----------|
--------------------------------------------------------------------------------------------------------------------------------------------------|
--------------------------------------------------------------------------------------------------------------------------------------------------|

关于linux - 添加然后删除行到另一行,只有当它不包含字符时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54392759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com