gpt4 book ai didi

linux - 将读取行转换为 awk

转载 作者:太空宇宙 更新时间:2023-11-04 09:41:08 25 4
gpt4 key购买 nike

当您处理大文件时,读取行非常慢。我从谷歌找到的一般建议是使用 awk,但是如何将以下 while 转换为 awk

        while read r; do
html[$dId]+=$(echo -e "\n$r")
stopList $(echo -e "$r" | tr -d ' ') all
done <<< "$list"

我尝试过的

        awk '{ 
html[$dId]+=$(echo -e "\n$0")
stopList $(echo -e "$0" | tr -d ' ') all
}' <<< "$list"

最佳答案

它之所以慢是因为它每次迭代运行多个进程:

while read r; do
html[$dId]+=$(echo -e "\n$r")
stopList $(echo -e "$r" | tr -d ' ') all
done <<< "$list"

有:2 个 echos,一个 tr,和 stopList 函数,我们甚至不知道它做了什么。

要将其转换为 awk,您需要重新考虑一下,如下所示:

html[$dId]=$(awk '{ printf("\n%s", $0) }' <<< "$list")

也就是说,不是逐行附加到 htmlawk 应该生成整个内容。在单个 awk 进程中,您可以进行非常强大的文本处理,这将比多个 echotr 等更有效例如在 shell 中。

我的示例不包括 stopList,因为您没有解释它的作用。无论它做什么,您都需要在 awk 中实现它,以便它可以在同一个 awk 进程中运行。然后您的脚本将比当前的逐行 while 循环快得多。

关于linux - 将读取行转换为 awk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21268786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com