GNU/Linux >> Tutoriels Linux >  >> Linux

Faire "couper" Modifier un fichier en place ?

L'man ne me donne pas beaucoup d'espoir, mais j'espère qu'il s'agit d'une fonctionnalité non documentée (et/ou spécifique à GNU).

Réponse acceptée :

Vous ne pouvez pas. Utilisez ed ou GNU sed ou perl, ou faites ce qu'ils font en coulisses, c'est-à-dire créer un nouveau fichier pour le contenu.

ed , portatif :

ed foo <<EOF
1,$s/^([^,]*),([^,]*),([^,]*).*/1,3/
w
q
EOF

GNU sed :

sed -i -e 's/^([^,]*),([^,]*),([^,]*).*/1,3/' foo

Perl :

perl -i -l -F, -pae 'print @F[1,3]' foo

cut , en créant un nouveau fichier (recommandé, car si votre script est interrompu, vous pouvez simplement le relancer) :

cut -d , -f 1,3 <foo >foo.new &&
mv -f foo.new foo

cut , remplaçant le fichier en place (conserve la propriété et les autorisations de foo , mais nécessite une protection contre les interruptions) :

cp -f foo foo.old &&
cut -d , -f 1,3 <foo.old >foo &&
rm foo.old

Je recommande d'utiliser l'un des cut méthodes basées. De cette façon, vous ne dépendez d'aucun outil non standard, vous pouvez utiliser le meilleur outil pour le travail et vous contrôlez le comportement en cas d'interruption.


Linux
  1. Modifier les autorisations d'un fichier

  2. Exemples de commande chattr pour modifier les attributs de fichier (rendre les fichiers immuables)

  3. Modifier la date de création du fichier

  4. Comment rendre le fichier clairsemé?

  5. Enregistrer les modifications en place avec awk

Commande Chown sous Linux (modifier la propriété du fichier)

Comment rendre un fichier exécutable sous Linux

Comment modifier les autorisations de fichier

Linux make Commande avec des exemples

Modifier de manière récursive les extensions de fichier dans Bash

Comment rendre un fichier NON modifiable ?