如何在bash中遍歷文件並回顯行號和行號?如何遍歷文件並用行號回顯每行
我都這樣了,裏面什麼都有,但行號:
while read p;
do
echo "$p" "$LINE";
done < file.txt
感謝您的幫助!
編輯這將使用xargs運行多線程,所以我不想使用計數器。
如何在bash中遍歷文件並回顯行號和行號?如何遍歷文件並用行號回顯每行
我都這樣了,裏面什麼都有,但行號:
while read p;
do
echo "$p" "$LINE";
done < file.txt
感謝您的幫助!
編輯這將使用xargs運行多線程,所以我不想使用計數器。
我只想用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"
。
貓-n會工作!對不起,我應該提到,我不想使用計數器,因爲這將在多個實例上運行,並且需要每行有唯一的計數器 –
@d -_- b使用'nl -ba「$ file」' - 我沒有沒有意識到,但是-n不是POSIX,並且沒有超過'nl'。 – kojiro
您可以使用AWK:
awk '{print NR,$0}' file.txt
您可以使用awk
:
awk '{print NR "\t" $0}' file.txt
或者你可以保留行數的計數在循環:
count=0
while read line
do
((count+=1))
printf "%5d: %s\n" "$count" "$line"
done
使用printf
允許您格式化數字,以便文件中的行全部排列。
只是爲了好玩,慶典V4
mapfile lines < file.txt
for idx in "${!lines[@]}"; do printf "%5d %s" $((idx+1)) "${lines[idx]}"; done
不要這樣做。
或者爲了更好玩,mapfile -c1 -O1 -C printf「%5d%s」'
這真是太棒了 –
[nl(1)](http://linux.die.net/man/1/nl)? – nosid
你的問題不是很清楚。 'xargs'你在做什麼*其他*? – kojiro
@nosid嗯,我不知道這件事。並且認爲我是一個POSIX惡魔,並且應該比使用'cat -n'知道得更好。 – kojiro