我有一个文件(假设文件已排序):
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
我怎样才能轻松完成?
答案 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拆分内容并重定向到单独的文件中。