如何以bash方式循环文件并回显行号和行号?
我有这个,除了行号之外还有其他所有内容:
while read p;
do
echo "$p" "$LINE";
done < file.txt
感谢您的帮助!
编辑这将使用xargs运行多线程,所以我不想使用计数器。
答案 0 :(得分:3)
我只会使用cat -n file
但如果你真的想使用bash循环:
i=0
while read; do
printf '%d %s\n' $(( ++i )) "$REPLY"
done < file
更新:我现在更喜欢nl
到cat -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
不要这样做。