Étant donné: il y a 40 colonnes dans un enregistrement. Je veux remplacer la 35e colonne afin que la 35e colonne soit remplacée par le contenu de la 35e colonne et un symbole "$". Ce qui m'est venu à l'esprit est quelque chose comme:
awk '{print $1" "$2" "...$35"$ "$36...$40}'
Cela fonctionne mais parce que c'est irréalisable lorsque le nombre de colonnes est aussi grand que 10k. J'ai besoin d'une meilleure façon de procéder.
Vous pouvez faire comme ça:
awk '$35=$35"$"'
Il existe probablement des moyens plus efficaces de procéder. Avec cette mise en garde:
awk '{$35 = $35"$"; print}' infile > outfile
Pour réserver le séparateur de champ d'origine, je l'ai fait. La colonne que je voulais effacer était le numéro 12 $.
awk -F"\t" '{OFS=FS}{ $12="" ; print }' infile.txt > outfile.txt
Avec gawk -i
, Si vous l'avez, vous pouvez modifier le fichier en place.
Si le délimiteur de champ est <space>
:
sed 's/ */$&/35'
En cas de problème avec les réponses "approuvées", cela remplacerait plus que la première colonne du fichier. J'utilise cette commande générique:
awk '$[column]="[replace]"' FS=, OFS=, inputfile > outputfile
Où:
[column]
= colonne que vous souhaitez modifier en commençant par 1 (pas 0)[replace]
= texte que vous souhaitez remplacer