awk를 사용하여 각 셀에 문자열을 추가하는 방법은 무엇입니까?

awk를 사용하여 각 셀에 문자열을 추가하는 방법은 무엇입니까?

이것이 출력입니다 cal. 각 셀에 추가 내용을 추가하는 가장 쉬운 방법은 무엇입니까 <SPACE>?

     June 2021        
Su Mo Tu We Th Fr Sa  
       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

예상되는 결과:

     June 2021
Su  Mo  Tu  We  Th  Fr  Sa
         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

답변1

이것은 아마도 당신이 원하는 것입니다:

$ cal | awk 'NR>1{gsub(/.../,"& ")}1'
      June 2021
Su  Mo  Tu  We  Th  Fr  Sa
         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

각 행 끝에 있는 "셀"에 공백을 추가하지 않으며, 월+연도 행의 "셀" 뒤에 추가 공백을 추가하지 않습니다.

답변2

사용 awk:

$ cal | awk '{ gsub(/[^ ] |   /, "& ") }1'

또는 다음을 사용하십시오 sed.

$ cal | sed -E 's/[^ ] |   /& /g'
      June  2021
Su  Mo  Tu  We  Th  Fr  Sa
         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

답변3

GNU awk

cal | cat | gawk -v FIELDWIDTHS="3 3 3 3 3 3 2" 'NR > 1 {$1 = $1} 1'

관련 정보