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이므로 헤더의 길이는 구현마다 다를 수 있습니다.

관련 정보