首页 > 解决方案 > 从两个唯一标签或评论之间的文件中提取内容并将其放入具有相同标签或评论的其他文件中?

问题描述

我有 2个包含此内容的文件test1.pytest2.py

测试1.py:

#first

#endoffirst

#second

#endofsecond

#3rd

#endof3rd

test2.py :

#first
this is first command
#endoffirst

#second
this is second command
#endofsecond

#3rd
this is 3rd command
#endof3rd

我想首先检查test2.py文件并在#first#endoffirst之间复制内容,然后使用 Linux 中的 bash 脚本或其他操作将其放入test1.py文件中的相同标签中。我的意思是一个文件中两个唯一标签或命令之间的所有内容都应该复制并放在另一个文件中的相同标签或注释之间。

我已经测试了很多东西 line sed命令,但我无法得到正确的答案。

我很感激任何人都可以帮助我解决这个问题

标签: linuxbashshellsedscripting

解决方案


这可能是你想要做的:

$ cat tst.awk
/^#/ {
    inBlock = !inBlock
    if ( inBlock ) {
        tag = $0
    }
}
NR == FNR {
    if ( inBlock ) {
        val[tag] = (tag in val ? val[tag] ORS : "") $0
    }
    next
}
$0 in val {
    print val[$0]
}
!inBlock

$ awk -f tst.awk test2.py test1.py
#first
this is first command
#endoffirst

#second
this is second command
#endofsecond

#3rd
this is 3rd command
#endof3rd

推荐阅读