欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 查看linux服務器上jdk的安裝路徑方法

    查看linux服務器上jdk的安裝路徑方法

    這篇文章主要介紹了查看linux服務器上jdk的安裝路徑方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • shell腳本中執(zhí)行python腳本并接收其返回值的例子

    shell腳本中執(zhí)行python腳本并接收其返回值的例子

    這篇文章主要介紹了shell腳本中執(zhí)行python腳本并接收其返回值的例子,本文重點在于如何接收python腳本的返回值,需要的朋友可以參考下
    2014-08-08
  • shell備份文件、重命名文件、刪除指定文件的3個腳本分享

    shell備份文件、重命名文件、刪除指定文件的3個腳本分享

    這篇文章主要介紹了shell備份文件、重命名文件、刪除指定文件的3個腳本分享,是學習shell時的練習腳本,shell新手朋友可以參考下哦
    2014-07-07
  • jq命令對JSON進行過濾遍歷結(jié)構(gòu)轉(zhuǎn)換等操作實例

    jq命令對JSON進行過濾遍歷結(jié)構(gòu)轉(zhuǎn)換等操作實例

    這篇文章主要介紹了jq命令對JSON進行過濾遍歷結(jié)構(gòu)轉(zhuǎn)換等操作實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • shell腳本ssh遠程執(zhí)行命令給變量賦值的問題解決

    shell腳本ssh遠程執(zhí)行命令給變量賦值的問題解決

    本文主要介紹了shell腳本ssh遠程執(zhí)行命令給變量賦值的問題解決,就是從A機器通過SSH方式到B機器,并執(zhí)行相關(guān)的命令,具有一定的參考價值,感興趣的可以了解一下
    2023-07-07
  • Idea使用Bashsupport插件編輯Shell腳本的方法

    Idea使用Bashsupport插件編輯Shell腳本的方法

    這篇文章主要介紹了Idea插件之——Bashsupport編輯Shell腳本的相關(guān)知識,功能非常齊全有檢查錯誤并且還可以在idea中直接運行shell腳本,本教程帶領(lǐng)大家一步步演示插件的安裝和配置,需要的朋友可以參考下
    2021-05-05
  • 詳解shell腳本的編寫規(guī)范

    詳解shell腳本的編寫規(guī)范

    這篇文章主要介紹了編寫shell腳本的規(guī)范,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Linux nano命令使用示例

    Linux nano命令使用示例

    nano是一個小型、免費、友好的編輯器,旨在取代非免費Pine包中的默認編輯器Pico,nano是一個字符終端的文本編輯器,有點像DOS下的editor程序,這篇文章主要介紹了Linux nano命令使用示例,需要的朋友可以參考下
    2023-03-03
  • rm -rf之后磁盤空間沒有釋放的解決方法

    rm -rf之后磁盤空間沒有釋放的解決方法

    本文主要介紹了rm -rf之后磁盤空間沒有釋放的解決方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • shell腳本查看k8s日志介紹

    shell腳本查看k8s日志介紹

    大家好,本篇文章主要講的是shell腳本查看k8s日志介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01

最新評論