#!/bin/bash

# 配置路径
LIST_FILE="/home/share/empiar/11521/data/0923.list"
PARTICLES_DIR="/home/share/empiar/11521/data/particles_shiny_map1"
OUTPUT_FILE="/home/share/empiar/11521/data/fix.star"

# 检查列表文件是否存在
if [ ! -f "$LIST_FILE" ]; then
    echo "错误: 列表文件 $LIST_FILE 不存在"
    exit 1
fi

# 收集所有存在的_shiny.star文件路径
star_files=()
while IFS= read -r filename; do
    # 跳过空行
    [ -z "$filename" ] && continue
    
    # 只处理_shiny.star文件
    if [[ "$filename" == *_shiny.star ]]; then
        full_path="$PARTICLES_DIR/$filename"
        if [ -f "$full_path" ]; then
            star_files+=("$full_path")
        else
            echo "警告: 文件不存在 - $full_path"
        fi
    fi
done < "$LIST_FILE"

# 检查是否有可用文件
if [ ${#star_files[@]} -eq 0 ]; then
    echo "错误: 没有找到任何_shiny.star文件"
    exit 1
fi

# 提取第一个文件的前22行作为头部（去除空行，保留原样但确保无空行）
head -n 22 "${star_files[0]}" | sed '/^$/d' > "$OUTPUT_FILE"

# 处理每个文件：从第23行开始，到倒数第二行结束，同时去除空行
for file in "${star_files[@]}"; do
    # 获取文件从第23行开始的内容，然后删除最后一行，再去除空行
    awk 'NR > 23' "$file" | sed '$d' | sed '/^$/d' >> "$OUTPUT_FILE"
done

echo "成功合并 ${#star_files[@]} 个文件到 $OUTPUT_FILE（已去除空行和每个文件的最后一行）"
    
