Com o awk para sua pergunta atualizada
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 !§%/(//
Eu tenho um arquivo assim:
1 abcde
2 00
3 12
4 12
5 ghijkl
6 jsaslm
7 uawrns
8 abcde
9 \(%"!&/
10 $!"$&/(
90 !§%/(//
Eu quero substituir todos os números maiores que 3 na primeira "coluna" (ou seja, aquele que contém 1, 2 etc.). Eles devem ser substituídos pelo resultado do cálculo do número módulo 3 - exceto os números que são divisíveis por 3 (esses devem ser apenas 3). Então, o resultado deve ser assim:
1 abcde
2 00
3 12
1 12
2 ghijkl
3 jsaslm
1 uawrns
2 abcde
3 \(%"!&/
1 $!"$&/(
3 !§%/(//
A formatação não importa muito, mas o caminho mostrado acima seria o preferido.
Estou usando o Linux.
com 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 !§%/(//
Tags text-processing