AWK按分隔符拆分文件至独立文件失败:生成文件为空求助
问题分析与解决
你的AWK命令能生成对应文件名但文件为空,核心原因是部分AWK实现中,输出缓冲未及时刷新,或是对变量文件名的重定向处理存在差异。
修正后的命令
写法一:直接构造重定向文件名
awk 'BEGIN {FS="[_ \t]"} {print > ($2 "_HP100.txt")}' my_file.txt
写法二:使用追加模式确保写入
awk 'BEGIN {FS="[_ \t]"} {fn=$2"_HP100.txt"; print >> fn}' my_file.txt
写法三:手动关闭文件(适配严格的AWK版本)
awk 'BEGIN {FS="[_ \t]"} {fn=$2"_HP100.txt"; print >> fn; close(fn)}' my_file.txt
为什么原命令失效
- 部分AWK版本中,使用
>fn进行重定向时,会默认缓冲输出,若未触发自动刷新(如程序结束前未填满缓冲),内容就不会写入文件。 >>会强制以追加模式写入,避免缓冲截断问题;close(fn)则会手动刷新缓冲区并关闭文件,确保内容立即写入磁盘。
测试后,你会看到CGTCGCCAAACTTAAC_HP100.txt文件生成,且包含对应的目标行。
内容的提问来源于stack exchange,提问作者EmreTaylanDuman
相关产品推荐
相关产品推荐

