Dᴀʀ*_*ᴅᴇʀ 9 bash text-processing
我正在寻找一种方法来打印我的脚本正在通过的文件行号。我找到了,$LINENO但是当我这样做时
echo 'Found foo in file' $(basename $foo) 'on line' $LINENO >> foo.csv
它打印结果“在文件的第 97 行的文件 Foo 中找到 foo .csv。我希望它打印它正在查看的文件中的行,而不是它所在的脚本行。我如何回显行号文件?
Jos*_* R. 19
nl在浏览文件之前,您可以使用它们对文件的行进行编号:
$ cat testfile
a
b
c
$ nl -b a testfile
1 a
2 b
3 c
Run Code Online (Sandbox Code Playgroud)
请注意,这-b a是必需的,因为默认情况下,nl不会对空行进行编号。
当然,如果您的文件非常大,这将是低效的,因为它将通过文件两次。
也许更好的选择是使用您自己的行计数器,以便您只需要浏览一次文件:
COUNT=0
while read -r line; do
COUNT=$(( $COUNT + 1 ))
if [ ... ];then
# Do things to the line
# Make use of COUNT to show line number
fi
done < your_file_here
Run Code Online (Sandbox Code Playgroud)
这仅在您逐行处理文件时才有效。grep例如,如果您正在使用它,它将不起作用。
| 归档时间: |
|
| 查看次数: |
33214 次 |
| 最近记录: |