2012-08-08 101 views
3

我有一个文件(只有1列)是这样的:如何在Linux中保留原始顺序来复制行?

A 
B 
Z 
D 
N 

和我想要做的就是复制每一行,所以我得到这样的:

A 
A 
B 
B 
Z 
Z 
D 
D 
N 
N 

我只能想到的用猫相同的文件,然后对它进行排序:

cat file1 file1 | sort -k1 > file1_duplicate 

但后来我失去了我的文件的顺序这对我来说很重要:

A 
A 
B 
B 
D 
D 
N 
N 
Z 
Z 

任何建议都会有帮助。

回答

7

尝试例如

sed p file >newfile 
+0

重复,只要你想重复 – Petesh 2012-08-08 10:33:30

0

LSB有perl5。这将这样的伎俩:

cat file1 | perl -pe '$_.=$_' > file1_duplicate 
+0

你可以简单地打印' “从Perl内部第二次,就像我在'sed'中演示的一样。此外,这是一个无用的猫使用。 http://partmaps.org/era/unix/award.html – tripleee 2012-08-08 11:11:46

+0

@tripleee确实有不止一种方法可以在perl中做到这一点。使用cat,fil1和file1_duplicate是从问题中提取出来的。性能不会太差,如果你需要更多的话,例如。 pv之间,你不需要改变它:) – Sylwester 2012-08-09 14:31:50

+0

哦,我只是觉得它看起来太神秘。但是不必要的字符串拷贝也很容易避免。 – tripleee 2012-08-09 14:38:31

0

随着coreutilspaste你可以做这样的:用尽可能多的“-ep”

paste -d'\n' file file 
1
awk '{print $1;}{print $1;}' file.txt > duplicatefile.txt 
相关问题