2015-09-26 61 views
1

添加列索引我有一個行數和列的這樣一個文本文件:如何在bash

a b c d ... 
e f g h ... 
i j k l ... 
... 

我要添加列索引與輸出這個樣子的

每個條目
1:a 2:b 3:c 4:d ... 
1:e 2:f 3:g 4:h ... 
1:i 2:j 3:k 4:l ... 
... 

我想知道是否有一個簡單的方法來實現這個在bash中。謝謝!

回答

1

使用awk:

awk '{for (i=1;i<=NF;i++){printf i":"$i" "};printf "\n"}' file 

輸出:

 
1:a 2:b 3:c 4:d 5:... 
1:e 2:f 3:g 4:h 5:... 
1:i 2:j 3:k 4:l 5:... 
1:... 
+2

如果域中的一個包含''%,你會得到有趣的結果,這種方式。使用'printf(「%d:%s」,i,$ i)'而不是'printf i':「$ i」「'來避免這個問題。還要注意,這會使所有行以虛假的空格字符結束,這可能是也可能不是問題。其中一種方法是'awk'{for(i = 1; i <= NF; ++ i){$ i = sprintf(「%d:%s」,i,$ i)};打印}「,即替換字段而不是直接打印。 – Wintermute

+0

謝謝你的有用提示。 – Cyrus

1

用Perl:

perl -lane '$, = " "; print map { (1 + $_) . ":$F[$_]" } 0 .. $#F' file 
# or 
perl -lane '$, = " "; $i = 1 ; print map { $i++ . ":$_" } @F' file