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

Unix下如何打印奇数行并提取拆分为多行的DB记录的指定值

解决方案

问题原因

  • 输入文件中每条完整DB记录被拆分为2行:第1行包含9个字段,第2行是单独的日期串,你原脚本逐行提取第10列的逻辑不符合实际数据结构
  • Shell变量赋值时等号两侧不能加空格,你原脚本中的10th_colum =存在语法错误
  • 多层管道+循环嵌套awk的写法冗余,执行效率低

实现方案

方案1:直接匹配目标行(最简实现)

目标行是仅由数字和下划线组成的单独行,用grep正则匹配即可:

grep -E '^[0-9_]+$' filename.txt

输出结果:

20210813_20210816_20210818
20210813_20210816

方案2:按行号提取(适用于固定拆分结构的文件)

示例中目标内容都在偶数行,直接提取偶数行即可:

awk 'NR%2==0' filename.txt

方案3:合并拆分记录后提取指定列(适用于需要完整记录的场景)

如果需要先把拆分的两行合并为单条完整记录,再提取第10列,可以用以下命令:

awk 'NR%2==1 {prev=$0} NR%2==0 {print prev, $0}' filename.txt | awk '{print $10}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:15:02