다음과 같은 파일이 있습니다.
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 !§%/(//