Como exibir cada dia de um mês em uma linha separada usando tr, sed e cal

0

Como usar comandos, cal , sed e tr e o canal para exibir os dias numéricos (por exemplo, 1, 2, 3 etc.) de um mês, com cada dia em uma linha separada

Eu tentei:

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

e siga esta saída:

December
S
M
Tu
W
Th
F
S
    
por NOOBCAKE 26.11.2015 / 20:15

2 respostas

4

Você chegou perto.

  1. Você precisa suprimir a saída de sed antes de imprimir linhas seletivamente:

    $ 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       
    

    Seu sed pode não ter -n . Nesse caso, use d para excluir todas as linhas, exceto as que você deseja.

  2. Seu comando tr substitui tudo, exceto alpahabets - e isso inclui dígitos. Apenas substitua espaços:

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

O intervalo de linhas no comando sed por @muru chamou minha atenção. Você pode fazer isso confiando menos no formato de cal :

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

POSIX não especifica o formato para cal , portanto, o comprimento do cabeçalho pode variar de acordo com a implementação.

    
por 26.11.2015 / 20:49

Tags