2014-08-30 126 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 
相關問題