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

使用AWK将非空行$7列值填充至后续空行对应列

解决方案

要实现将非空行的第7列值填充到后续空行的对应列位置,可以使用以下AWK命令:

针对完全空行的场景

如果你的“空行”指的是完全没有内容的行(NF=0),使用这个命令:

awk 'BEGIN {OFS=" "} NF {last7=$7; print; next} {$7=last7} 1' plik

针对第7列缺失的非空行场景

如果需要同时处理字段数不足7的非空行(比如只有前6列,第7列空白),可以用这个更通用的版本:

awk 'BEGIN {OFS=" "} NF >=7 {last7=$7} {if (NF <7) $7=last7} 1' plik

命令解释
  • BEGIN {OFS=" "}:设置输出字段分隔符为空格,确保输出的列间隔和输入一致,避免AWK默认用单空格替换原有的多空格分隔
  • NF {last7=$7; print; next}(第一个命令):
    • 当行包含字段(非空行)时,将该行的第7列值存入变量last7
    • 直接打印当前行,然后用next跳过后续逻辑,避免修改当前行的内容
  • {$7=last7} 1:
    • 对于空行(或字段数不足7的行),将第7列赋值为last7中保存的最近非空行的第7列值
    • 1是AWK的简写,表示执行默认的打印操作,输出修改后的行
  • NF >=7 {last7=$7}(第二个命令):只要行的字段数≥7,就更新last7的值为当前行的第7列,确保后续行能获取到最新的填充值

示例验证

假设输入文件plik内容如下:

col1 col2 col3 col4 col5 col6 apple
colA colB colC colD colE colF 

colX colY colZ colW colV colU

使用第二个通用命令后,输出会是:

col1 col2 col3 col4 col5 col6 apple
colA colB colC colD colE colF apple
      apple
colX colY colZ colW colV colU apple

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 07:38:16