如何连接多个文本或xml文件,但忽略每个文件中的特定行?

2024-09-28 21:51:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有许多xml文件(在这种情况下可以视为文本文件)希望连接起来。通常我认为我可以通过Linux命令提示符或bash脚本执行以下操作:

cat somefile.xml someotherfile.xml adifferentfile.xml > out.txt

除了在这种情况下,我需要完整地复制第一个文件,除了最后一行,但在所有后续文件中,完全省略了前四行和最后一行(从技术上讲,我确实需要最后一个文件中的最后一行,但它始终是相同的,因此我可以用一个单独的语句轻松地添加它)。你知道吗

在所有这些文件中,前四行和最后一行总是相同的,但它们之间的内容不同。xml文件的名称可以硬编码到脚本中,也可以从一个单独的数据文件中读取,它们的数量有时可能会有所不同,但总在10-12左右。你知道吗

我想知道什么是最简单和最容易理解的方法来做这件事。我想我更喜欢bash脚本或者python脚本,尽管我通常对bash脚本的理解要好一点。我脑子里想不起来的是如何修剪掉所有文件的前四行(除了第一个文件)和最后一行。我怀疑有一些Linux命令可以做到这一点,但我不知道它会是什么。有什么建议吗?你知道吗


Tags: 文件txt脚本bashlinux情况xmlout
2条回答
sed '$d' firstfile > out.txt
sed  separate '1,4d; $d' file2 file3 file4 >> out.txt
sed '1,4d' lastfile >> out.txt

重要的是使用 separate(或更短的-s)选项,以便range语句1,4$分别应用于每个文件。你知道吗

从GNU sedmanual

-s, separate

By default, sed will consider the files specified on the command line as a single continuous long stream. This GNU sed extension allows the user to consider them as separate files.

分两步进行:

  1. 使用head命令(获取所需的行)
  2. 使用cat进行联合收割机

你可以使用临时文件或bash欺骗。你知道吗

相关问题 更多 >