按第一个字符拆分文件 - unix

时间:2014-07-16 10:12:54

标签: file unix split

我有一个文件(假设文件已排序):

A213 foo bar sentence
A123 bar foo sentence
B84521 abc hello world
C984 def word hello

我需要根据每行的第一个字符将其拆分为三个文件:

File1中:

A213 foo bar sentence
A123 bar foo sentence

文件2:

B84521 abc hello world

文件3:

C984 def word hello

我怎样才能轻松完成?

2 个答案:

答案 0 :(得分:4)

您可以使用此awk将所有行重定向到特定文件名:

awk '{print > substr($0, 0, 1)}' file

因为substr($0, 0, 1)返回该行的第一个字符,print >将输出重定向到给定的文件名。


此awk也是如此,虽然它涉及更改字段分隔符以使其特定于字符:

awk -v FS= '{print > $1}' file

答案 1 :(得分:0)

#!/usr/bin/awk -f
{ ab = substr($0,0,1);
 if(ab == "a") { printf $0"\n" >> "/dirname/file1" }
else if(ab == "b") { printf $0"\n" >> "/dirname/file2" }
else { printf $0"\n" >> "/dirname/file3" } }

以上脚本位于文件“redir”中。以redir inputfilename

运行脚本

上面的awk拆分内容并重定向到单独的文件中。