gpt4 book ai didi

shell - 如何在shell中以可移植的方式拆分第一个空行上的文件(例如使用sed)?

转载 作者:行者123 更新时间:2023-12-04 01:25:34 24 4
gpt4 key购买 nike

我想将包含 HTTP 响应的文件拆分为两个文件:一个仅包含 HTTP header ,另一个包含消息正文。为此,我需要使用 在第一个空行(或第一行仅包含 CR = ' \r ' 字符的 UNIX 工具)将文件拆分为两个文件。 shell脚本 .

如何以可移植的方式执行此操作(例如使用 sed ,但没有 GNU 扩展)?可以假设空行不会是文件中的第一行。空行可以到达任一文件,无文件或两个文件;对我来说没关系。

最佳答案

您可以使用 csplit :

echo "a
b
c

d
e
f" | csplit -s - '/^$/'

或者
csplit -s filename '/^$/'

(假设“文件名”的内容与 echo 的输出相同)将在这种情况下创建两个名为“xx00”和“xx01”的文件。前缀可以从“xx”更改为“outfile”,例如,使用 -f outfile并且文件名中的位数可以通过 -n 3 更改为 3 .如果您需要处理 Macintosh 行尾,您可以使用更复杂的正则表达式。

要在每个空行拆分文件,您可以使用:
csplit -s filename '/^$/' '{*}'

图案 '{*}'使前面的模式尽可能多地重复。

关于shell - 如何在shell中以可移植的方式拆分第一个空行上的文件(例如使用sed)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1644532/

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