You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Grep/Awk提取TEST FILE到;的内容并生成独立文件?

解决方案:提取指定片段并保存为独立文件

这里有两种实用的方案,用你偏好的awk/grep工具就能完成需求,完美适配你的FILE A内容:

方案一:纯Awk实现(无需额外工具)

Awk的字符串处理能力刚好能搞定这种分段提取的需求,直接运行以下命令即可:

awk '{
    count = 0
    # 循环匹配所有符合条件的片段
    while (match($0, /TEST FILE[^;]*;/)) {
        # 提取匹配到的片段
        segment = substr($0, RSTART, RLENGTH)
        # 给片段末尾补个空格(和你期望的输出格式一致)
        print segment " " > ("File" ++count)
        # 移除已处理的片段,继续处理剩余内容
        $0 = substr($0, RSTART + RLENGTH)
    }
}' FILE_A

说明:

  • match($0, /TEST FILE[^;]*;/) 会精准匹配从TEST FILE开始到第一个;结束的所有内容(包括;)
  • 每提取一个片段,就写入到对应的File1/File2...文件中,count变量自动递增生成文件名
  • 最后给片段补空格是为了和你给出的期望输出格式完全一致(比如File2的结尾是;)

方案二:Grep + Bash循环实现(更简洁)

如果喜欢用grep,可以结合bash循环来逐个写入文件:

# 用grep提取所有匹配片段,再循环写入文件
i=1
grep -o 'TEST FILE[^;]*;' FILE_A | while read -r line; do
    echo "$line " > "File$i"
    i=$((i+1))
done

说明:

  • grep -o 参数会只输出匹配到的内容,每个片段单独一行
  • 循环读取每一行匹配结果,依次写入File1到File5,同样补空格保证格式一致
  • 如果你的环境支持Perl正则,可以把grep命令改成grep -oP 'TEST FILE.*?;' FILE_A,非贪婪匹配会更稳妥(避免意外匹配到多个片段)

两种方案都能完美处理你提供的FILE A内容,生成符合要求的File1到File5文件。

内容的提问来源于stack exchange,提问作者user2008558

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:43:52