我正在寻找一些想法,让脚本执行以下操作:
我有一个文本文件,例如test.txt中有类似的文本:

#
# sectione 1
#
several
text
lines
and so on
#
# sectione 2
#
more text
and more
#
and more
# ...
#
# sectione 3
#
more
more
more
#
# sectione 4
#
...
...

我需要一个可能性,只计算第二部分的行数,不包括以#
在我上面的例子中,脚本应该显示一个在结尾处有“3”的计数器
如。
# counter_script.sh test.txt
# 3

这有可能吗?我怎么办?
我将Debian Linux与bash shell结合使用。

最佳答案

您可以使用以下awk命令:

awk '/sectione/{f=$3==2?1:0}f&&!/^#/{c++}END{print c}' file

多行版本中的说明:
第2.awk节:
/sectione/ {
    # Set f(ound) to 1 (true) if the number between 'sectione' is a 2
    # otherwise 0 (false)
    f=$3==2?1:0
}

# If f(ound) is true (1) and the line starts not with a #
# count it
f&&!/^#/{
    c++
}

# At the end of input print the c(ount)
END{
    print c
}

关于linux - 用于计算除#之外的部分中的行的脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45304581/

10-15 05:16