【问题标题】:Find all lines in a file with a certain character at a certain position在某个位置查找具有某个字符的文件中的所有行
【发布时间】:2022-01-24 12:00:47
【问题描述】:

我希望我的 bash 脚本计算 .txt 文件的行数,该文件以“#”开头。

grep -o "#" $FILE | wc -l

我知道如何计算所有带有“#”的行,但我不知道如何实现条件,即“#”需要在程序的开头。

输入是其他 bash 脚本。我想计算不同的 bash 脚本中有多少 cmets。比我想将输出除以 txt 文件中的总行数。所以我知道 bash 脚本中有多少行是 cmets。就像如果我在 100 行代码中有 10 行 cmets,那么 10% 的代码是 cmets。

我还想在某个单词(例如“Hello”)之后扫描以“#”开头的这些行,并计算包含该单词的行数。希望有人也可以帮助我:)。

【问题讨论】:

  • 请在您的问题中添加示例输入(无描述、无图像、无链接)以及该示例输入所需的输出(无评论)。
  • 输入是其他 bash 脚本。我想计算不同的 bash 脚本中有多少 cmets。比我想将输出除以 txt 文件中的总行数。所以我知道 bash 脚本中有多少行是 cmets。就像如果我在 100 行代码中有 10 行 cmets,那么 10% 的代码是 cmets。
  • 不要只描述您的输入,向我们展示minimal reproducible example,其中包含示例输入和给定输入的预期输出。我们需要您提供一些我们可以复制/粘贴来测试的东西。见How to Ask
  • 那么输入可能是:#!/bin/bash#Write the line Helloecho "Hello"#Exit itexit 1 但正如我所说,它可以是一些随机的 Bash 代码......这个需要的输出为 3,因为 3 行以“#”开头。但我需要实现,带有 shebang 的行不算数,因为它不是评论。但我想我可以自己做。
  • <whitespace>#...echo "#this is not a comment"这样的行呢? echo "hello world" #this is a comment 行包含一个命令和一个注释,因此在计算 cmets 代码的百分比时技术上不应计算

标签: bash


【解决方案1】:

您可以通过以下方式计算所有以# 开头的行:

grep -c "^#" $FILE

或者在某个单词之后(中间有 0 个或多个其他字符):

grep -c "Hello.*#" $FILE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    相关资源
    最近更新 更多