Eu tenho vários arquivos de texto contendo 12 linhas e 3 colunas.
Exemplo:
2 6 0.74
42 6 0.58
80 6 0
112 6 0.24
132 6 1
216 6 0.7
342 6 0
390 6 0.21
432 6 0.56
466 6 0.75
524 6 0.6
646 6 0.9
Eu quero definir todos os valores da terceira coluna para 1 em todas as linhas.
A saída deve ficar assim:
2 6 1
42 6 1
80 6 1
112 6 1
132 6 1
216 6 1
342 6 1
390 6 1
432 6 1
466 6 1
524 6 1
646 6 1
Alguém conhece um comando que pode resolver esse problema?
awk '{print $1, $2, "1"}' inputfile > newfile
tentar
awk
$3 = 1
definirá o terceiro campo para 1sed (aqui GNU ou busybox
sed
com sua-i
opção para edição no local)[0-9.]*$
é uma sequência de0
de9
e.
até ao final da linha.sed (com 4 bytes de golfe)
[^ ]*$
qualquer caractere que não seja o espaço até o final da linha.fonte
sed 's/[^ ]*$/1/'
->awk
golfed:awk \$3=1
(POSIX, mas não trabalho com o awk dos anos 70 como encontrado em / bin no Solaris)awk
solução é muito legal .... você pode explicar plsAs linhas na saída esperada parecem terminar em dois caracteres de espaço e têm campos separados por uma guia e um caractere de espaço.
Se é isso mesmo que você deseja, precisará:
Ou com
sed
:fonte
Simplesmente com o GNU
sed
, use-i
para substituir o texto diretamente no arquivo:As colunas são acompanhadas por grupos de regex no parêntese, reutilizando-os com
\1
e\2
em seguida, usando um "1" para substituir o último grupo.Nesse caso de uso, a solução proposta
awk
é boa e curta também.fonte
isto fará o trabalho:
fonte
fonte