2014-07-16 97 views
1

我有一个文件本身(假定文件排序):分割文件 - UNIX

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

我需要它基于每一行的第一个字符分成三个文件:

文件1:

A213 foo bar sentence 
A123 bar foo sentence 

文件2:

B84521 abc hello world 

文件3:

C984 def word hello 

我怎么能做到这一点很容易?

回答

3

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

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

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


这也使得AWK它,尽管它涉及改变字段分隔符,使其字符具体:

awk -v FS= '{print > $1}' file 
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 inputfilename

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