Dado: existem 40 colunas em um registro. Quero substituir a 35ª coluna para que ela seja substituída pelo conteúdo da 35ª coluna e pelo símbolo "$". O que veio à mente é algo como:
awk '{print $1" "$2" "...$35"$ "$36...$40}'
Funciona, mas porque é inviável quando o número de colunas é tão grande quanto 10k. Eu preciso de uma maneira melhor de fazer isso.
linux
text-processing
awk
replace
Marcus Thornton
fonte
fonte
sed 's/./$&/35'
$
delimitado ou não. O item acima deve afixar a 35ª ocorrência de qualquer número de caracteres delimitadores - em outras palavras, o 35º campo - com o caractere$
- não importa como os caracteres estejam em cada campo.Para reservar o Seprator de Campo original, eu fiz isso. A coluna que eu queria colocar em branco era o número $ 12.
Com
gawk -i
, se você o tiver, poderá editar o arquivo no local.fonte
Se tivesse problemas ao usar as respostas "aprovadas", substituiria mais do que apenas a primeira coluna do arquivo. Eu uso este comando genérico:
Onde:
[column]
= coluna que você deseja alterar começando com 1 (não 0)[replace]
= texto que você deseja substituirfonte
awk '$1=mktime($1)' FS=, OFS=, oldfile > newfile
... substituiu um milhão de carimbos de hora em alguns segundos !! :)