首页 > 解决方案 > awk:输出文件太多 10 记录号 12

问题描述

我在尝试拆分文件时遇到问题。谁能帮我这个 ?

样本内容:

apple fruit
goa   fruit
tomato vegetable
tiger  animal 

脚本:

 #!/bin/bash
 awk 'FNR==1 { hdr = $0; next }
    {
        if(!f[$2]) { print hdr >"file" $2".htm"; f[$2] = 1 }
        print >>"file" $2".htm"
    }' samplefile.txt

标签: linuxfileunixawksunos

解决方案


/usr/xpg4/bin/awk如果使用 sun os或/usr/xpg6/bin/awk(也请参阅此答案中的评论以获取更多详细信息),您能否尝试以下操作(未测试,因为未提供示例)。

似乎 OP 正在使用 OLD 损坏awkclose功能在以下解决方案中不起作用,所以我建议 OP 使用xpgawk(s),后来 Ed sir 也证实了这一点。

#!/bin/bash
 awk 'FNR==1 { hdr = $0; next }
    {
        if($2 != prev){close(file)}
        file="file" $2 ".htm"
        if(!f[$2]) {print hdr > file; f[$2] = 1 }
        print >> file
        prev=$2
    }' samplefile.txt

或尝试:

#!/bin/bash
 awk 'FNR==1 { hdr = $0; next }
    {
        file="file" $2 ".htm"
        if(file!=prev){close(prev)}
        if(!f[$2]) {print hdr > file; f[$2] = 1 }
        print >> file
        prev=file
    }' samplefile.txt

推荐阅读