2012-08-08 74 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 
相關問題