Je souhaite supprimer la première ligne de plusieurs fichiers texte et la remplacer par une autre ligne. Existe-t-il un moyen de le faire en utilisant le terminal?
Je sais comment utiliser vim, existe-t-il un moyen de l'automatiser avec? Je veux éviter de le faire manuellement (comme lors de l'édition de chaque fichier individuellement).
Si possible, je voudrais éviter d'installer de nouvelles bibliothèques (surtout pour quelque chose comme ça que je considère très simple - mais je peux me tromper).
Merci d'avance!
la source
sed
est en fait ce que je cherchais!Eh bien, en utilisant
vim
lui-même:Ce que cela fait:
setline (n, text)
, eh bien, est une fonction qui définit la lignen
surtext
.call
est nécessaire pour appeler des fonctions.bufdo
est utilisé pour répéter une commande à travers les tampons (sans plage, il agit sur tous les tampons).wq
enregistre et quitte le tampon. Nous devons le faire avant de passer au tampon suivant, donc cette commande est chaînée à lacall
commande using|
.-c cmd
runscmd
est une commande en mode commande après le chargement du premier tampon.Nes
active le mode ex non compatible, silencieux, ce qui est préférable pour le traitement non interactif.Avantages:
setline
contenu du texte peut être quelque chose - un&
dans unsed
texte de remplacement peut avoir des effets inattendus.la source
sed
semble beaucoup plus facile à utiliser, mais c'est vraiment génial quivim
peut faire la même chose! Merci beaucoup pour votre réponse!bufdo
). Considérez que vous avez les fichiers déjà ouverts et ... Et pour montrer une alternative à1s/foo/bar/
.Quelques autres options:
awk
(nécessite une version relativement nouvelle de GNUawk
)Perl / shell
Coquille / coreutils
la source
Ce script fera ce que vous avez demandé, en plaçant les fichiers modifiés dans un nouveau répertoire sans changer réellement les originaux.
la source
En utilisant
gawk
Exemple
la source
jEdit: Je l'utilise pour trouver et remplacer en masse. Il est puissant avec la possibilité d'utiliser RegEx - Expressions régulières. Vous pouvez opérer sur des fichiers dans un répertoire, spécifier des extensions de fichier, par exemple, ".html" et ainsi de suite. Et, vous pouvez regarder les paramètres régionaux du changement de candidat dans le contexte, dans une interface graphique. jEdit est super.
jEdit est disponible via le centre de logiciels d'Ubuntu.
la source
Les commandes tail et cat le feraient facilement:
Enveloppez-les dans une boucle appropriée et utilisez peut-être un fichier temporaire approprié et juste au lieu d'un nom de fichier temporaire codé en dur. Je crois que bash et d'autres shells ont une syntaxe pour créer des fichiers temporaires.
L'option -n de tail a deux interprétations selon que l'argument a un signe plus. S'il a un signe plus, cela signifie afficher la queue du fichier à partir du numéro de ligne donné. Sinon, le nombre est le nombre de lignes, y compris la dernière ligne, que la queue est censée produire.
la source