gpt4 book ai didi

linux - BASH - 从一天中提取日期

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:09 26 4
gpt4 key购买 nike

刚刚开始在这里使用 BASH,目前我一直在提取当月每个星期三的日期......有人能够帮助我在这里阐明一些情况吗?干杯!

最佳答案

尝试以下脚本(受到 SoFan 评论的启发):

varY=2016;varM=8;varD=4; cal $varM $varY | sed 's/   / . /g' | awk -v f="$varD" 'NR>2{if ($f ~ "\.") {next;} {print $f}}'

说明:

  • varY=2016;varM=8;varD=4;:脚本的参数。分别为年、月、日。 Day 可以是 1 2 3 4 5 6 7,默认对应于 su mo tu we th fr sa
  • cal $varM $varY :显示 $varM$varY 输入参数的日历。在这种情况下:

        August 2016
    su mo tu we th fr sa
    1 2 3 4 5 6
    7 8 9 10 11 12 13
    14 15 16 17 18 19 20
    21 22 23 24 25 26 27
    28 29 30 31

    由于 awk 不读取空字段,因此我们必须转换空字段,以便它可以检测到它们。

  • sed 的//。/g' :在遇到的每个 3 个空格 block 的中间添加一个 .

     .  August 2016 .   
    su mo tu we th fr sa
    . 1 2 3 4 5 6
    7 8 9 10 11 12 13
    14 15 16 17 18 19 20
    21 22 23 24 25 26 27
    28 29 30 31 . . .
    . . . . . . .
  • awk -v f="$varD"'NR>2{if ($f ~ "\.") {next;} {print $f}}' :

    • awk -v f="$varD" :表示您正在读取存储在 $varD 变量中的字段编号
    • NR>2 :表示您要跳过前 2 行
    • if ($f ~ "\.") {next;} {print $f} :如果字段是一个点,我们跳过它。否则,我们将其打印出来。

      3
      10
      17
      24
      31

关于linux - BASH - 从一天中提取日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39221352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com