为什么搜索和搜索;在bash中替换参数的扩展比在zsh中慢得多?

为什么搜索和搜索;在bash中替换参数的扩展比在zsh中慢得多?,bash,zsh,Bash,Zsh,我正在用bash/zsh解决代码的出现,我正在阅读今天的输入(±2000) 输入由双换行符分隔(实际输入为±2000行): 由于IFS是单个字符,我想用一个制表符替换2个换行符(因此我可以将IFS设置为tab并迭代输入): input=“$(cat-6.csv)” input_new=${input/$'\n\n'/$'\t'} echo$input_new 在zshell中,这是即时的: ➜ bash游戏时间zsh./address-6.sh ./ADRINT-6.sh 0.01s用户0.

我正在用bash/zsh解决代码的出现,我正在阅读今天的输入(±2000)

输入由双换行符分隔(实际输入为±2000行):

由于IFS是单个字符,我想用一个制表符替换2个换行符(因此我可以将IFS设置为tab并迭代输入):

input=“$(cat-6.csv)”
input_new=${input/$'\n\n'/$'\t'}
echo$input_new
在zshell中,这是即时的:

➜  bash游戏时间zsh./address-6.sh
./ADRINT-6.sh 0.01s用户0.01s系统80%cpu 0.016总计
但是,在bash中,这需要约42秒:

➜  bash-game time bash ./advent-6.sh
bash ./advent-6.sh  42.52s user 0.04s system 99% cpu 42.590 total
为什么zsh在搜索和替换参数扩展方面比bash表现得更好? 这里发生了什么事


(注意:我意识到使用sed/awk还有很多其他方法可以做到这一点,我不需要帮助用制表符替换两个换行符-如果您对此感兴趣-我关心它们为什么不同)

那么为什么不呢?Bash实现可能更糟糕,仅此而已。请发布您的bash版本和zsh版本。
bash
对我来说比较慢,但只有三分之一。假设您的advent-6.csv是交付的原始数据(不是csv),您会注意到两个shell的显示方式非常不同……提示:
echo“$input\u new”
请参见@oguzismail什么缺乏研究?在询问之前,我检查了bash黑客维基、bash参考手册和zshell手册。我不确定你希望人们在发布前进行多少研究?无可否认,我在zsh方面相当糟糕(这就是我学习的原因),osx与bash的一个古老版本捆绑在一起。您可能希望使用更现代的版本进行基准测试,以防在过去十年中出现性能改进。
➜  bash-game time bash ./advent-6.sh
bash ./advent-6.sh  42.52s user 0.04s system 99% cpu 42.590 total