最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用AWK在shell中生成日歷小程序

 更新時(shí)間:2019年07月31日 14:45:30   作者:2lovecode  
這篇文章主要為大家詳細(xì)介紹了如何使用AWK在shell中生成日歷小程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

最近在學(xué)習(xí)sed和awk時(shí),發(fā)現(xiàn)了一本入門級(jí)別的好書:《Software Design 中文版 03》。
我們這里的日歷程序也是從那里得來(lái),這里強(qiáng)烈推薦希望了解sed和awk的同志們?nèi)胧直緯?/p>

代碼段:

#  在shell中生成日歷
#  使用方式
#  awk -f thisFile +2017
#  awk -f thisFile +2017.10
#  awk -f thisFile +2017.10.10
#
function whichWeek(y, m, d, s) {
    s = 0
    if (((y%4 == 0) && (y%100 != 0)) || (y%400 == 0)) if (M[2] == 28) M[2]++
    if (y>0) s += --y + int(y/4) - int(y/100) + int(y/400)
    while (m > 1) s += M[--m]
    return (s+d)%7
}

function printCalendar(y, m, d, nowWeek, i){
  printf("%d%s %d%s\n", y, "年", m, "月")
  print "日 一 二 三 四 五 六 "
  printf("%s", repeat(" ", ((nowWeek+1)%7)*3))
  for (i=1; i<=M[m]; i++) {
    if ((nowWeek+i) % 7 != 6) {
      printf("%2d ", i)
    } else {
      printf("%2d \n", i)
    }
  }
  print "\n"
}
function repeat(flag, time, i, str){
  for (i=0; i<time; i++) {
    str = str flag
  }

  return str
}
function option(opt) {
  if (ARGC > 1 && ARGV[1] ~ /^\+.*$/) {
    print ARGC, ARGV[1]
    opt = substr(ARGV[1], 2)
    delete ARGV[1]
  }
  return opt
}
BEGIN {
  M[1] = 31
  M[2] = 28
  M[3] = 31
  M[4] = 30
  M[5] = 31
  M[6] = 30
  M[7] = 31
  M[8] = 31
  M[9] = 30
  M[10] = 31
  M[11] = 30
  M[12] = 31
  W[0] = "日"
  W[1] = "一"
  W[2] = "二"
  W[3] = "三"
  W[4] = "四"
  W[5] = "五"
  W[6] = "六"
  split(option(), date, ".")
  nowWeek = whichWeek(date[1]+0, date[2]+0, date[3]+0)
  if (date[3] != "") {
    print "星期" W[nowWeek]
  } else if (date[2] != "") {
    printCalendar(date[1]+0, date[2]+0, M[date[2]], nowWeek)
  } else {
    for (j=1; j<=12; j++) {
      printCalendar(date[1]+0, j, M[i], whichWeek(date[1]+0, j, 0))
    }
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Linux 命令之rsync命令詳解

    Linux 命令之rsync命令詳解

    rsync命令是一個(gè)遠(yuǎn)程數(shù)據(jù)同步工具,可通過(guò)LAN/WAN快速同步多臺(tái)主機(jī)間的文件。下面通過(guò)本文給大家分享Linux 命令之rsync命令詳解,需要的朋友參考下吧
    2017-08-08
  • shell 腳本中的 '-f' 和 '-d' 是什么意思

    shell 腳本中的 '-f' 和 '-d&apo

    本文講解如何使用'-f'和'-d'條件表達(dá)式來(lái)測(cè)試文件和目錄,在實(shí)際腳本中,這樣的條件判斷常用于根據(jù)不同的情況執(zhí)行不同的操作,感興趣的朋友跟隨小編一起看看吧
    2023-12-12
  • 一天一個(gè)shell命令 linux文本系列-file命令用法

    一天一個(gè)shell命令 linux文本系列-file命令用法

    這篇文章主要介紹了一天一個(gè)shell命令 linux文本系列-file命令用法,需要的朋友可以參考下
    2016-06-06
  • linux修改tomcat默認(rèn)訪問(wèn)項(xiàng)目的具體步驟(必看篇)

    linux修改tomcat默認(rèn)訪問(wèn)項(xiàng)目的具體步驟(必看篇)

    下面小編就為大家?guī)?lái)一篇linux修改tomcat默認(rèn)訪問(wèn)項(xiàng)目的具體步驟(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • nagios 分發(fā)文件實(shí)現(xiàn)代碼

    nagios 分發(fā)文件實(shí)現(xiàn)代碼

    這篇文章主要介紹了nagios 分發(fā)文件實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-09-09
  • shell 中數(shù)學(xué)計(jì)算總結(jié)

    shell 中數(shù)學(xué)計(jì)算總結(jié)

    shell中的賦值和操作默認(rèn)都是字符串處理,在此記下shell中進(jìn)行數(shù)學(xué)運(yùn)算的幾個(gè)特殊方法,以后用到的時(shí)候可以來(lái)看,呵呵
    2012-09-09
  • 詳解Linux下find查找文件命令和grep查找文件命令

    詳解Linux下find查找文件命令和grep查找文件命令

    在使用linux時(shí),經(jīng)常需要進(jìn)行文件查找。其中查找的命令主要有find和grep,兩個(gè)命令是有區(qū)的,今天通過(guò)本文給大家介紹下Linux下查找文件(find、grep命令),感興趣的朋友一起看看吧
    2022-04-04
  • 5個(gè)實(shí)用的shell腳本面試題和答案

    5個(gè)實(shí)用的shell腳本面試題和答案

    這篇文章主要介紹了5個(gè)實(shí)用的shell腳本面試題和答案,給出的腳本堪稱編碼規(guī)范,麻雀雖小,異常處理,友好提示,一應(yīng)俱全,值得學(xué)習(xí),需要的朋友可以參考下
    2014-06-06
  • java應(yīng)用啟動(dòng)與停止的shell腳本分享

    java應(yīng)用啟動(dòng)與停止的shell腳本分享

    這篇文章主要和大家分享三個(gè)shell腳本,分別是jvm啟動(dòng)參數(shù)相關(guān)的setjvment.sh,利用java命令啟動(dòng)進(jìn)程的start.sh和停止java進(jìn)程的stop.sh,有需要的可以參考下
    2023-10-10
  • Linux中的內(nèi)核鏈表實(shí)例詳解

    Linux中的內(nèi)核鏈表實(shí)例詳解

    這篇文章主要介紹了Linux中的內(nèi)核鏈表實(shí)例詳解的相關(guān)資料,鏈表中一般都要進(jìn)行初始化、插入、刪除、顯示、釋放鏈表,尋找節(jié)點(diǎn)這幾個(gè)操作,需要的朋友可以參考下
    2017-08-08

最新評(píng)論

汉阴县| 隆化县| 安义县| 石嘴山市| 卓尼县| 鱼台县| 乐至县| 三原县| 新郑市| 金山区| 突泉县| 璧山县| 怀仁县| 揭东县| 辽阳县| 阳江市| 江达县| 申扎县| 香港| 海阳市| 新建县| 吴江市| 金山区| 栾川县| 永平县| 太保市| 衡阳县| 宝应县| 雷波县| 大石桥市| 乌鲁木齐县| 香港| 涞水县| 拉萨市| 阳信县| 泰顺县| 峨边| 南昌县| 什邡市| 西宁市| 广德县|