파일의 첫 번째 부분에 있는 숫자를 계산 결과로 바꿉니다.

파일의 첫 번째 부분에 있는 숫자를 계산 결과로 바꿉니다.

다음과 같은 파일이 있습니다.

     1 abcde
     2 00
     3 12
     4 12
     5 ghijkl
     6 jsaslm
     7 uawrns
     8 abcde
     9 \(%"!&/
    10 $!"$&/(
    90 !§%/(//

첫 번째 "열"(예: 1, 2 등을 포함하는 숫자)에서 3보다 큰 모든 숫자를 바꾸고 싶습니다. 이는 3으로 나누어지는 숫자를 제외하고(단지 3이어야 함) 숫자를 모듈로 3으로 계산한 결과로 대체되어야 합니다. 따라서 결과는 다음과 같아야 합니다.

     1 abcde
     2 00
     3 12
     1 12
     2 ghijkl
     3 jsaslm
     1 uawrns
     2 abcde
     3 \(%"!&/
     1 $!"$&/(
     3 !§%/(//

형식은 중요하지 않지만 위에 표시된 방식이 선호됩니다.

저는 리눅스를 사용하고 있습니다.

답변1

업데이트된 문제를 해결하려면 awk를 사용하세요.

awk '$1{$1=$1%3?$1%3:3}1' file

 1 abcde
 2 00
 3 12
 1 12
 2 ghijkl
 3 jsaslm
 1 uawrns
 2 abcde
 3 \(%"!&/
 1 $!"$&/(
 3 !§%/(//

답변2

그리고 awk:

$ awk -v n=3 '{$1 = ($1 > n) ? ($1 % n) ? $1 % n : n : $1};1' <file
1 abcde
2 00
3 12
1 12
2 ghijkl
3 jsaslm
1 uawrns
2 abcde
3 \(%"!&/
1 $!"$&/(
3 !§%/(//

관련 정보