如何循环文件并使用行号回显每一行

时间:2014-03-04 20:42:57

标签: linux bash unix while-loop

如何以bash方式循环文件并回显行号和行号?

我有这个,除了行号之外还有其他所有内容:

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

感谢您的帮助!

编辑这将使用xargs运行多线程,所以我不想使用计数器。

4 个答案:

答案 0 :(得分: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"

答案 1 :(得分:1)

您可以使用awk:

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

答案 2 :(得分: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可以格式化数字,因此文件中的行都排成一行。

答案 3 :(得分:0)

只是为了好玩,bash v4

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

不要这样做。