2015-02-11 66 views
1

我想包括額外的列數到多行和數量的增加,例如行號列:包括在多行

db1    CIRBS       500   10 
db2    CITEMP       500   7 
db5    IN_DATA       500   6 
dbb    IN_INDEX       500   3 

最終觀點:

1 db1    CIRBS       500   10 
2 db2    CITEMP       500   7 
3 db5    IN_DATA       500   6 
4 dbb    IN_INDEX       500   3 

回答

6

使用awk:

awk '{ print NR, $0 }' filename 

NR是當前記錄(即行)的編號,$0是整行,所以這將在每行之前打印一個升序數字。

3

在Perl中,您可以使用$. - 當前文件的當前行號。

use strict; 
use warnings; 
use English; 

while (<DATA>) { 
    # $. and $_ 
    print $INPUT_LINE_NUMBER . " " . $ARG; 
} 

__DATA__ 
db1    CIRBS       500   10 
db2    CITEMP       500   7 
db5    IN_DATA       500   6 
dbb    IN_INDEX       500   3 

對於更簡單的回答cat -n也應該這樣做。

-n, --number 
     number all output lines 
+0

爲什麼不打印$。 $ _「'?通過將它分成兩行可以獲得什麼? – 2015-02-11 11:57:48

+0

不是很多,我只是反感使用'$ _',如果我可以避免的話(雖然,因爲我使用'$。在這個例子中,這有點不切實際) – Sobrique 2015-02-11 11:59:05

+0

但是你在你的代碼中使用了'$ _',你只是沒有明確地使用它,當然這更糟糕:-) – 2015-02-11 12:00:33

4

貓:

cat -n infile 

隨着NL:

nl -ba infile 

使用grep:

grep -n . infile 

w ^第i個GNU SED:

sed = infile | sed 'N; s/\n/ /' 

隨着GNU SED + xargs的:

sed = infile | xargs -n2 

使用awk:

awk '{ print NR, $0 }' infile 

還是:

awk '$0 = NR OFS $0' infile 

的Perl:

perl -pne 's/^/$. /' infile 
+0

非常詳盡的答案。 – NeronLeVelu 2015-02-11 13:23:10