2014-03-04 45 views
0

如何在bash中遍歷文件並回顯行號和行號?如何遍歷文件並用行號回顯每行

我都這樣了,裏面什麼都有,但行號:

while read p; 
do 
echo "$p" "$LINE"; 
done < file.txt 

感謝您的幫助!

編輯這將使用xargs運行多線程,所以我不想使用計數器。

+1

[nl(1)](http://linux.die.net/man/1/nl)? – nosid

+0

你的問題不是很清楚。 'xargs'你在做什麼*其他*? – kojiro

+0

@nosid嗯,我不知道這件事。並且認爲我是一個POSIX惡魔,並且應該比使用'cat -n'知道得更好。 – kojiro

回答

3

我只想用cat -n file

但是,如果你真的想用一個bash循環:

i=0 
while read; do 
    printf '%d %s\n' $((++i)) "$REPLY" 
done < file 

更新:我現在更喜歡nlcat -n,因爲前者是標準的。要獲得與cat -n相同的結果,請使用nl -b a "$file"

+0

貓-n會工作!對不起,我應該提到,我不想使用計數器,因爲這將在多個實例上運行,並且需要每行有唯一的計數器 –

+0

@d -_- b使用'nl -ba「$ file」' - 我沒有沒有意識到,但是-n不是POSIX,並且沒有超過'nl'。 – kojiro

1

您可以使用AWK:

awk '{print NR,$0}' file.txt 
0

您可以使用awk

awk '{print NR "\t" $0}' file.txt 

或者你可以保留行數的計數在循環:

count=0 
while read line 
do 
    ((count+=1)) 
    printf "%5d: %s\n" "$count" "$line" 
done 

使用printf允許您格式化數字,以便文件中的行全部排列。

0

只是爲了好玩,慶典V4

mapfile lines < file.txt 
for idx in "${!lines[@]}"; do printf "%5d %s" $((idx+1)) "${lines[idx]}"; done 

不要這樣做。

+1

或者爲了更好玩,mapfile -c1 -O1 -C printf「%5d%s」' kojiro

+0

這真是太棒了 –

相關問題