linux shell grep -c,bash – “grep -c”与“wc -l”

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

shellcript成功转换的.

到目前为止一切都那么好,但有一件事令我困惑.有时,脚本会设置一个名为$iterations的变量,以便它知道执行特定for循环的次数.此值由脚本创建的临时文件中的空行数确定.

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

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

到目前为止,除了其中一个文本文件之外,其他所有文件都没有正常工作,它们似乎没有正确设置$iterations变量,即使在tempfile中似乎有超过20,000个空行,也给出了值’1′.

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

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

并且剧本突然起作用,即. $iterations设置正确.

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值