grep -v'^#'做什么

时间:2013-03-31 06:19:19

标签: shell

我的程序看起来像这样。

ALL=`cat $1 | grep -v '^#' | wc -l`
FINISHED="0"

for i in `cat $1 | grep -v '^#'`; do
        echo "PROBE $i"
 I will be doing some operation
FINISHED=`echo $FINISHED"+1"|bc`

我将通过提供一个文件名作为参数运行此脚本,其中将显示探针列表。

我有两个问题

  1. grep -v '^#'的含义是什么。我了解到'^通常用于匹配特定的字符串。但是在我给出的文件名中没有#。此外,我得到cat $1 | grep -v '^#' | wc -l的探测总数。

  2. echo $FINISHED"+1"|bc。这里有任何关于为什么开发人员添加|bc

  3. 的想法

3 个答案:

答案 0 :(得分:32)

  • ^表示“行首”
  • #是文字#
  • -v表示在grep中“反转匹配”,换句话说,返回所有不匹配的行。

将这些放在一起,你的表达是“选择所有不以#开头的行”

|是管道字符,它在左侧获取命令的输出,并将其用作右侧命令的输入。 bc就像一个命令行计算器(进行基本数学运算)。

答案 1 :(得分:2)

我会用它来排除我阅读的代码中的注释。因此,所有评论行都以#开头,如果有太多评论,我不想看到它们。

grep -v' ^#'

答案 2 :(得分:0)

我们有不同的计算方法。选择你喜欢的那个。

a=`echo 1+1 | bc`; echo $a
b=$((1+1)); echo $b
c=`expr 1 + 1`; echo $c
let d=1+1; echo $d