首页 > 解决方案 > ncal 命令问题查找星期一数

问题描述

如何使用 cal 命令找到给定年份中每个月的第一天的星期一数。到目前为止,我已经尝试 grepping 包含 Mo 的每一行

ncal 2021 | grep Mo

标签: bashzsh

解决方案


ncal 格式很简单。这是输出ncal 2012

                              2012
    January           February          March             April
Su  1  8 15 22 29        5 12 19 26        4 11 18 25     1  8 15 22 29
Mo  2  9 16 23 30        6 13 20 27        5 12 19 26     2  9 16 23 30
Tu  3 10 17 24 31        7 14 21 28        6 13 20 27     3 10 17 24
We  4 11 18 25        1  8 15 22 29        7 14 21 28     4 11 18 25
Th  5 12 19 26        2  9 16 23        1  8 15 22 29     5 12 19 26
Fr  6 13 20 27        3 10 17 24        2  9 16 23 30     6 13 20 27
Sa  7 14 21 28        4 11 18 25        3 10 17 24 31     7 14 21 28

    May               June              July              August
Su     6 13 20 27        3 10 17 24     1  8 15 22 29        5 12 19 26
Mo     7 14 21 28        4 11 18 25     2  9 16 23 30        6 13 20 27
Tu  1  8 15 22 29        5 12 19 26     3 10 17 24 31        7 14 21 28
...

您将如何手动解决任务?

  • 只看以开头的行Mo
  • 在这些行中,搜索1.
  • 记下找到的总数1

这三个步骤对应于后面的三个命令ncal

#! /usr/bin/env bash
year=$1
ncal "$year" | grep '^Mo' | grep -wo 1 | wc -l

推荐阅读