如何将文件中包含单词的一行文本移动到顶部(需要多个文件)



文件结构如下:

folderspkgbuild
folder2spkgbuild
folder3spkgbuild

每个spkgbuild有以下内容:

name=packagename
version=1.0
release=1
# depends : packages
# description : blah blah
build()
{
}

我想把# description移到文件的顶部,# depends在它的下面,像这样:

# description : blah blah
# depends : packages
name=packagename
version=1.0
release=1

build()
{
}

知道怎么做吗?

和一个远非健壮的Linux一行代码:

find -type f -name spkgbuild -printf "%hn" | xargs -L 1 bash -c 'cd $0 ; cat <(grep -xE "^# des.*" spkgbuild) <(grep -xE "^# dep.*" spkgbuild)  <(grep -xvE "^# de.*" spkgbuild) > spkgbuild.1;mv spkgbuild.1 spkgbuild'

解释:查找所有名为spkgbuild的文件将每个生命所在的目录分别传递给xargs,cd分别传递给包含文件的每个目录,使用三个grep重新排列行,将输出写入临时文件(spkgbuild.1),mv完成后将该文件写入spkgbuild

就是这样,我觉得a应该为此付出代价

filesToModify = ["add your path here", "and here", "and so on"]
linesToMove = ["# description :", "# depends :"] # you can add more
for fName in filesToModify:
content = ""
with open(fName, "r") as fl:
lines = []
for line in fl:
moved = False
for start in linesToMove:
if line.startswith(start): 
lines.insert(0, line + ("n" if not line.endswith("n") else ""))
moved = True
break
if not moved:
lines.append(line)
content = "".join(lines)
with open(fName, "w") as fl:
fl.write(content)

然后像python script.py一样运行i。

最新更新