tr、sed、calを使用してその月の各日付を別々の行に表示する方法

tr、sed、calを使用してその月の各日付を別々の行に表示する方法

コマンドとパイプを使用してcalsedtr数値日付(例:1、2、3など)を別々の行に表示する方法

私は試した:

cal 12 2015| sed '3,7p' | tr -cs "[:alpha:]" "[\n*]" 

そして出力:

December
S
M
Tu
W
Th
F
S

答え1

あなたはすでに近いです。

  1. ラインを選択的に印刷する前に、出力を抑制する必要がありますsed

    $ cal 12 2015 | sed -n '3,7p'                             
           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       
    

    あなたはsedおそらくそうではありません-n。この場合、d目的の行を除くすべての行を削除します。

  2. あなたのtrコマンドは、数字を含むアルファベットを除くすべてを置き換えます。スペースを変更します。

    $ cal 12 2015 | sed -n '3,7p' | tr -s ' ' '\n'                
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    

答え2

sedコマンドの行範囲@murulu私の注目を集めた。次の形式にあまり依存していない可能性がありますcal

cal 12 2015 | sed '/[[:alpha:]]/d' | tr ' ' '\n' |sed -e '/^$/d'

POSIXはフォーマットしません。calしたがって、ヘッダーの長さは実装ごとに異なる場合があります。

関連情報