根据变量内容将文件拆分为多个

时间:2013-01-25 09:55:31

标签: bash awk split grep

我想根据文件的内容拆分文件 我的虚拟文件看起来像这样:

info   info    info    cat
info   info    info    cow
info   info    info    dog
info   info    info    dinosaur 
info   info    info    bat

$ 4个单词以不同的字母(C,D,B)开头 - 我想根据$ 4的第一个字母将文件拆分为多个。
优先输出(3个不同的文件)看起来像:

file_c

info   info    info    cat  
info   info    info    cow

FILE_D

info   info    info    dog
info   info    info    dinosaur 

FILE_B

info   info    info    bat

希望有人能帮助我。

4 个答案:

答案 0 :(得分:5)

这个oneliner应该工作:

awk '{print $0 > "file_"substr($4,0,1)}' yourfile

答案 1 :(得分:3)

awk '{name="file_"substr($4,0,1);print >name}' your_file

测试如下:

> cat temp
info   info    info    cat
info   info    info    cow
info   info    info    dog
info   info    info    dinosaur 
info   info    info    bat
> awk '{name="file_"substr($4,0,1);print >name}' temp
> cat file_b
info   info    info    bat
> cat file_c
info   info    info    cat
info   info    info    cow
> cat file_d
info   info    info    dog
info   info    info    dinosaur 

答案 2 :(得分:2)

$ while read a b c d; do echo $a $b $c $d >> file_${d:0:1}; done < dummy.txt 

答案 3 :(得分:0)

使用Python

with open("temp.txt","r") as f:
     for line in f.readlines():
        col = line.split()[3][0]
        filename = "file_"+col
        f2 = open(filename,"a")
        f2.write(line)
f2.close()