我使用的是由猛砸管道与SED和削减
returnedValue=`sed -n -e "$2 p" $1 | cut -c $START-$END`
组成的管道,其中$ 1是一个文件名非常缓慢,$ 2是$ 1 $开始 - $ END特定行是在initial-结束位置在行中。
我需要计算$ returnedValue很多时间,它非常缓慢。
有没有更好的方法来做到这一点?
上述指令的计算复杂度在哪里?
感谢,
卢卡
我使用的是由猛砸管道与SED和削减
returnedValue=`sed -n -e "$2 p" $1 | cut -c $START-$END`
组成的管道,其中$ 1是一个文件名非常缓慢,$ 2是$ 1 $开始 - $ END特定行是在initial-结束位置在行中。
我需要计算$ returnedValue很多时间,它非常缓慢。
有没有更好的方法来做到这一点?
上述指令的计算复杂度在哪里?
感谢,
卢卡
按照基准在the answers here(免责声明:我的答案是公认的一个),以获得该行的最快的方法将是
returnedValue=`head -n +$2 "$1" | tail -n 1 | cut -c "$START-$END"`
原始命令的复杂性是O(N),其中N是文件中的行数,这是O($ 2)。此外,head
和tail
仅用于从文件中挑选某些行,因此它们针对此任务进行了高度优化。
您可以在遇到该行或“awk”NR == $ 2 {print; quit}“''后使用'sed -n”$ 2 {p; q}“'退出。 – Kevin
'sed -n“1 {p; q}”filename'返回命令乱码 – lucavb
您是否在mac/BSD上?他们不喜欢';',你需要使用'$ 2 $'{p \ nq \ n}'',但首先看到我的答案。 – Kevin