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

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

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

最近在學習sed和awk時,發(fā)現(xiàn)了一本入門級別的好書:《Software Design 中文版 03》。
我們這里的日歷程序也是從那里得來,這里強烈推薦希望了解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))
    }
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Linux 命令之rsync命令詳解

    Linux 命令之rsync命令詳解

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

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

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

    一天一個shell命令 linux文本系列-file命令用法

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

    linux修改tomcat默認訪問項目的具體步驟(必看篇)

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

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

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

    shell 中數(shù)學計算總結

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

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

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

    5個實用的shell腳本面試題和答案

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

    java應用啟動與停止的shell腳本分享

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

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

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

最新評論

阿荣旗| 西乡县| 龙江县| 延边| 集安市| 特克斯县| 平凉市| 宁安市| 鄂托克旗| 柳州市| 神池县| 武强县| 克什克腾旗| 海林市| 宜阳县| 灵璧县| 遵义市| 永靖县| 东乡| 焉耆| 石泉县| 永平县| 镇巴县| 临湘市| 田东县| 泰宁县| 油尖旺区| 三江| 休宁县| 高密市| 基隆市| 河间市| 咸丰县| 长岭县| 梁河县| 东港市| 奉新县| 含山县| 子长县| 乌审旗| 蓬莱市|