J'ai plusieurs fichiers texte contenant 12 lignes et 3 colonnes.
Exemple:
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
Je veux définir toutes les valeurs de la troisième colonne sur 1 dans toutes les lignes.
La sortie devrait ressembler à ceci:
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
Est-ce que quelqu'un connaît une commande qui peut résoudre ce problème?
awk '{print $1, $2, "1"}' inputfile
essayer
awk '{$3=1 ; print ;}' oldfile > newfile
$3 = 1
définira le troisième champ sur 1sed
avec son -i
Option pour édition sur place)sed -i 's/[0-9.]*$/1/' file
[0-9.]*$
est une séquence de 0
à 9
et .
jusqu'à la fin de la ligne.sed -i 's/[^ ]*$/1/' file
[^ ]*$
n'importe quel caractère autre que l'espace, jusqu'à la fin de la ligne.Les lignes de votre sortie attendue semblent terminer en deux caractères spatiaux et avoir des champs séparés par une seule onglet et un caractère d'espace.
Si c'est bien ce que vous voulez, alors vous auriez besoin de:
awk -v 'OFS=\t ' '$3="1 "' < infile > outfile
Ou avec sed
:
tab=$(printf '\t')
sed "
s/[[:blank:]]\{1,\}/$tab /g
s/[^[:blank:]]\{1,\}[[:blank:]]*$/1 /
s/^[[:blank:]]*//" < infile > outfile
Simplement avec GNU sed
, en utilisant -i
Pour remplacer le texte directement dans le fichier:
sed -i 's:\(.*\s\)\(.*\s\)\(.*\):\1\21:g' textfile
Les colonnes sont assorties par des groupes de regex dans la parenthèse, les réutilisant avec \1
et \2
, puis en utilisant un "1" pour remplacer le dernier groupe.
Dans ce cas d'utilisation, la solution proposée à l'aide de awk
est également agréable et court.
cela fera le travail:
cat textfiles | cut -d' ' -f-2 | sed 's/$/ 1/'