Pergunta do calendário no unix

0

Eu quero imprimir as datas com seus respectivos dias de um mês em anos específicos.

O exemplo de ano inserido é 2018 e o mês é fev. Assim, a saída será exibida

Date.     Day  
1.        thursday
2.        Saturday
.
.
.
.
28.       Wednesday       
    
por Kharabela Bhat 22.02.2018 / 14:39

1 resposta

2

Você está descrevendo um bom exercício para um iniciante no Linux, então eu não vou te dar uma lição de casa, mas vou responder para ajudar você a fazer isso.

Comece aprendendo como usar o comando date , que é externo a awk . O comando date tem um recurso que pode gerar o dia da semana no formato numérico, portanto, se você digitar na linha de comando date +%u , receberá o dia da semana de hoje, começando em segunda . Para o dia da semana de outro dia, use a opção d , por exemplo, date -d2018-02-22 +%u . Há também o código de formato +%A para o nome da localidade do dia da semana, por exemplo, 'Quinta-feira'. Veja a man page para detalhes e muitas outras coisas interessantes do comando date .

Você então tem uma escolha. Você pode iterar sobre o comando date , imprimindo o resultado para cada dia do mês ou pode iterar nativamente em qualquer linguagem de script ou programação com a qual se sinta confortável. Por exemplo, você poderia usar o operador matemático de módulo % para fazer loop em sete dias da semana n%7 e usar uma forma de instrução case para sua operação de impressão ou definir uma matriz de sete elementos de nomes de dias da semana. Como exemplo, aqui está como definir e usar uma matriz em bash :

 dow=( Sun Mon Tues Wed Thu Fri Sat ) ; printf "%s\n" ${dow[4]}

O que resta é dizer ao seu loop quando parar, ie. quantos dias são no mês que você está processando. Isso é provavelmente mais fácil com uma matriz de doze elementos, cada um contendo o número de dias naquele mês. Você precisaria de um teste externo para verificar os 29 dias de fevereiro de um ano bissexto.

Quanto ao uso de awk , você pode usá-lo, mas é improvável que seja a melhor ferramenta para o trabalho porque ele foi criado como editor de fluxo e você não está processando corrente. No entanto, se a sua tarefa requer awk , então é com isso que você ficará preso.

    
por 22.02.2018 / 15:08

Tags