unix/linux如何划分两个不同文件中包含的行数?

unix/linux如何划分两个不同文件中包含的行数?,linux,bash,unix,Linux,Bash,Unix,我有一个文件,我正在一行一行地处理它,并用结果生成另一个文件。我想监控完成的百分比。在我的例子中,它只是新文件中的行数除以输入文件中的行数。一个简单的例子是: $ cat infile unix is awesome $ cat infile | process.sh >> outfile & 现在,如果我运行我的命令,如果process.sh完成了第一行,我应该得到0.33 有什么建议吗?您可以在debian/ubuntu包pv中使用: 这将使用行数进行进度。 也可以只

我有一个文件,我正在一行一行地处理它,并用结果生成另一个文件。我想监控完成的百分比。在我的例子中,它只是新文件中的行数除以输入文件中的行数。一个简单的例子是:

$ cat infile
unix
is
awesome

$ cat infile | process.sh >> outfile &
现在,如果我运行我的命令,如果process.sh完成了第一行,我应该得到0.33

有什么建议吗?

您可以在debian/ubuntu包pv中使用:

这将使用行数进行进度。 也可以只使用字节数:

pv file.txt | process.sh
上述命令将显示完成百分比和预计到达时间。

您可以在debian/ubuntu软件包pv中使用以下命令:

这将使用行数进行进度。 也可以只使用字节数:

pv file.txt | process.sh
上述命令将显示完成百分比和预计到达时间。

您可以使用bc:

echo "scale=2; $(cat outfile | wc -l) / $(cat infile | wc -l) * 100" | bc
此外,将此与观察更新进度相结合:

watch -d "echo \"scale=2; \$(cat outfile | wc -l) / \$(cat infile | wc -l) * 100\" | bc"
您可以使用bc:

echo "scale=2; $(cat outfile | wc -l) / $(cat infile | wc -l) * 100" | bc
此外,将此与观察更新进度相结合:

watch -d "echo \"scale=2; \$(cat outfile | wc -l) / \$(cat infile | wc -l) * 100\" | bc"
scale=2表示得到两个有效数字


scale=2表示您得到两个有效数字。

您需要读取文件两次,以了解其中的行数。使用wc-l命令获取文件的行数。您需要读取文件两次,以了解其中的行数。使用wc-l命令获取文件的行数。这可能是最佳答案。但它需要我安装pv。这可能是最好的答案。但它需要我安装pv。我喜欢你乘以100的方式;我使用sed:PI,就像你乘以100;我用sed:P