gpt4 book ai didi

bash - "grep -c"与 "wc -l"

转载 作者:行者123 更新时间:2023-11-29 09:20:06 26 4
gpt4 key购买 nike

我正在处理大量的大文本文件,即。将它们全部从一种格式转换为另一种格式。文件的原始格式存在一些细微差别,但是 - 在少数情况下进行了一些预处理 - 它们大部分都可以使用我创建的 bash shellscript 成功转换。

到目前为止一切顺利,但有一件事让我感到困惑。在某一时刻,脚本设置了一个名为 $iterations 的变量,以便它知道执行特定 for 循环的次数。该值由脚本创建的临时文件中的空行数决定。

因此,我的脚本的原始版本包含以下行:

    iterations=$(cat tempfile | grep '^$' | wc -l)

到目前为止,除了一个文本文件外,这对所有文本文件都运行良好,这些文本文件似乎没有正确设置 $iterations 变量,给出值“1”,即使似乎tempfile 中有超过 20,000 个空行。

但是,在发现 grep -c 后,我将行更改为:

    iterations=$(cat tempfile | grep -c '^$')

然后脚本突然起作用了,即。 $iterations 设置正确。

谁能解释为什么这两个版本会产生不同的结果?为什么第一个版本适用于某些文件而不适用于其他文件?是否有某个上限值,wc -l 默认为 1?不适用于第一个版本的文件是最大的文件之一,但不是集合中最大的文件(第一次正确转换)。

最佳答案

如果输入不是文本文件,grep 将打印单行 Binary file (standard input) matcheswc -l 会算那一行!但是 grep -c 会很高兴地计算文件中的匹配项数。

关于bash - "grep -c"与 "wc -l",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43477739/

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