如何使用AWK脚本从CSV的Description字段提取指定数值并格式化输出?
解决方案
方法1:Python 脚本
适合有编程基础的场景,处理灵活,能应对格式变化:
import csv import re # 正则匹配Description里的订单号和总价值 pattern = r'Your orders are (\d+) and total value is (\d+)' with open('your_file.csv', 'r', newline='', encoding='utf-8') as infile: # 按表头读取CSV reader = csv.DictReader(infile) for row in reader: match = re.search(pattern, row['Description']) if match: orders_num = match.group(1) total_val = match.group(2) print(f"Orders: {orders_num}, Total Value: {total_val}")
方法2:AWK 命令
适合Linux/macOS终端直接处理,无需编写复杂脚本:
BEGIN { FS = ", " # 设置CSV字段分隔符 skip_header = 1 # 标记跳过表头 } !skip_header { # 拆分第4列(Description)的内容 split($4, desc_parts, /[ ]/) orders = desc_parts[4] total = desc_parts[8] print "Orders:", orders, "Total Value:", total } { skip_header = 0 } # 第一行后取消表头跳过标记
运行方式:将代码保存为extract.awk,执行命令 awk -f extract.awk your_file.csv
方法3:Excel/Google Sheets 公式
适合办公场景,直接在表格内处理:
假设Description列是D列,从D2开始,在E2单元格输入以下公式,下拉填充即可:
=CONCATENATE("Orders: ", MID(D2, FIND("are ", D2)+4, FIND(" and", D2)-FIND("are ", D2)-4), ", Total Value: ", MID(D2, FIND("is ", D2)+3, LEN(D2)-FIND("is ", D2)-2))
内容的提问来源于stack exchange,提问作者harsh pamnani
相关产品推荐
相关产品推荐

