2013-02-03 31 views
0

有文件非分隔栏与栏之间没有分隔符:摘自分隔栏文件

cat file_no_del 
aba14092999140932436 
aba1111478991111484975 
aba1111973668111975690 

如何提取原始文件的行(带分隔符列之间)?并将其保存在带有分隔列的新文件中?

cat original_file 
aba1 40929991 40932436 
aba1 100496122 100501188 
aba1 101708714 101709305 
aba1 111478991 111484975 
aba1 111973668 111975690 

cat wanted_output 
aba1 40929991 40932436 
aba1 111478991 111484975 
aba1 111973668 111975690 

我的想法是有可能做到这一点是这样的:

for i in $(sort orginal_file); do awk '{print $1$2$3}' $i | grep -w - file_no_del 

但我有AWK &问题,不知道怎么greping后,我应该回来环路以划界的形式。
希望有人能帮助我。

+1

你怎么知道每一列开始的地方?也就是说,为什么第一行有8位数字,其他有9位? –

+0

位数是可变的。 – PoGibas

+0

尽管最后两列总是相同的长度?所以你可以把第一列的前四个字符,然后把剩下的一半分开? –

回答

2

如果file_no_del足够小,只是做:

awk 'NR==FNR{ a[$0]++ } NR!=FNR && a[$1 $2 $3]' file_no_del original_file 
+0

工程!谢谢.. – PoGibas

+0

+1但是写得更好:'awk'FNR == NR {a [$ 0] ++; next} $ 1 $ 2 $ 3在'file_no_del original_file' HTH中。 – Steve