2014-08-30 154 views
0

我有一个文本文件,它看起来像这样:如何将分隔符上的文本文件拆分为多个文件?

INPUT_FILE

1|abc 
2|def 
3|ghi 
n|etc... 

我需要分割该成两个文件的竖线分隔。所以这是预期的输出:

File_1:

1 
2 
3 
n 

File_2:

abc 
def 
ghi 
etc 

我不知道该输入文件将有多少行有。你如何以ksh或bash实现这个目标?

谢谢。

回答

2

AWK将这个任务是合适的:

awk -F\| '{print $1 > "File_1"; print $2 > "File_2"}' input_file 

此分割你的文字 “|”并将每列打印到相应的文件。

如果有两个以上的领域,你可能更愿意使用,而不是一个循环:

awk -F\| '{for(i=1;i<=NF;++i) print $i > "File_" i}' input_file 
+0

This Works。谢谢! – user3590335 2014-08-30 16:42:57

1
cut -d '|' -f 1 input_file > File_1 
cut -d '|' -f 2 input_file > File_2 

只有使用bash:

while IFS='|' read A B; do echo "$A" >>File_1; echo "$B" >>File_2; done <input_file 
0

下面是使用其他的bash命令的另一个解决方案

cat input_file | cut -d '|' -f1 > File_1 
cat input_file | cut -d '|' -f2 > File_2 

或者你可以将它们放在一条线上

cat input_file | tee >(cut -d '|' -f1 > File_1) | cut -d '|' -f2 > File_2