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

Linux Shell脚本:去除重复标识并重新格式化paste命令输出

处理paste合并后的数据去重并格式化表格

在Linux Shell环境中,使用paste file1 file2合并两个文件后,得到了包含重复标识的输出,需要编写脚本去除重复标识,并将输出转换为指定的结构化表格。

原合并输出

$ paste file1 file2
TRADE_DATE:12 Jul 2023   TRADE_DATE:13 Jul 2023
Symbol: AMAZON           Symbol: AMAZON
Price: 100.50           Price: 100.30
Symbol: TESLA       Symbol: TESLA
Price: 60.80        Price: 60.50

期望输出

TRADE_DATE     Symbol      Price
12 Jul 2023    AMAZON      100.50
12 Jul 2023    TESLA       60.80
13 Jul 2023    AMAZON      100.30
13 Jul 2023    TESLA       60.50

解决方案脚本

用awk可以高效处理这类结构化文本,脚本如下:

paste file1 file2 | awk '
BEGIN {
    # 打印对齐的表头
    printf "%-13s %-10s %-8s\n", "TRADE_DATE", "Symbol", "Price"
    count = 0
}
# 提取左右两个交易日
/TRADE_DATE/ {
    split($0, parts, /TRADE_DATE:/)
    date_left = parts[2]
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", date_left)
    date_right = parts[3]
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", date_right)
    next
}
# 提取左右两边的股票代码,存入数组
/Symbol/ {
    split($0, parts, /Symbol:/)
    sym_left[++count] = parts[2]
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", sym_left[count])
    sym_right[count] = parts[3]
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", sym_right[count])
    next
}
# 提取价格并输出左交易日对应的数据
/Price/ {
    split($0, parts, /Price:/)
    price_left[count] = parts[2]
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", price_left[count])
    price_right[count] = parts[3]
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", price_right[count])
    printf "%-13s %-10s %-8s\n", date_left, sym_left[count], price_left[count]
}
# 输出右交易日对应的数据
END {
    for (i=1; i<=count; i++) {
        printf "%-13s %-10s %-8s\n", date_right, sym_right[i], price_right[i]
    }
}
'

脚本说明

  1. BEGIN块:先打印格式化后的表头,通过%-Ns格式符固定每列宽度,实现对齐效果。
  2. TRADE_DATE行处理:拆分字符串提取左右两个日期,用gsub去除日期前后的多余空格。
  3. Symbol行处理:拆分提取左右股票代码,存入对应数组,同时用计数器记录股票数量。
  4. Price行处理:拆分提取左右价格,立即输出左交易日对应的股票代码和价格。
  5. END块:遍历数组,输出右交易日对应的所有股票代码和价格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:32:49