GNU/Linux >> Tutoriels Linux >  >> Linux

Insérer plusieurs lignes de données dans un fichier après les correspondances de modèle à l'aide du script shell Linux

Vous avez un morceau de code à insérer dans plusieurs fichiers ? Ensuite, vous êtes comme moi en train de passer un moment difficile! Je travaillais sur un site Web hébergé dans cpanel qui contenait de nombreux fichiers HTML dans chacun desquels un code contextuel devait être inséré. Le nombre de fichiers HTML était de 425. C'était un cauchemar de le faire sous Windows. Mais bon, je ne vous ai pas dit que j'avais trouvé une façon plus intelligente de le faire. Paiement ci-dessous !

Étape 1 :Copier des fichiers depuis CPANEL

Copiez tous les fichiers de cpanel vers votre système Windows local à l'aide de WinSCP.

Étape 2 :Copier des fichiers de Windows vers Linux

Copiez ensuite les fichiers HTML sur un serveur Linux. Si vous ne disposez pas de votre propre serveur, vous pouvez exécuter un système Linux virtuellement sur votre bureau à l'aide de virtualbox. Découvrez comment installer virtualbox ici.

Étape 3 :Utilisez la commande "sed" pour insérer du code

Utilisez la commande sed ci-dessous pour insérer votre code à partir d'un autre fichier. Par exemple :Données à insérer du fichier « add.txt » dans « input.txt ». Maintenant la commande serait :

Input.txt

abcd
efgh
ijkl
mnop
qrst

add.txt

uvwx
yzab
cdef
ghij
klmn
$sed '/ijkl/r add.txt' input.txt

La commande ajouterait le contenu de add.txt à input.txt après que le modèle "ijkl" corresponde. Ainsi, la sortie serait :

abcd
efgh
ijkl
uvwx
yzab
cdef
ghij
klmn
mnop
qrst

La commande ci-dessus afficherait le contenu sur le terminal. Pour mettre à jour le fichier avec le contenu, utilisez ensuite le "-i" avec la commande sed comme indiqué ci-dessous :

$sed -i '/ijkl/r add.txt' input.txt

Si vous devez insérer du contenu en entrée directe et non à partir du fichier, vous pouvez utiliser la commande ci-dessous :

$sed -i 's/.*ijkl.*/uvwx\n&/' input.txt
abcd
efgh
ijkl
uvwx
mnop
qrst

Étape 4 :Exécutez la commande ci-dessus dans une boucle avec le nombre de fichiers

Allez dans le répertoire où les fichiers doivent être modifiés. Utilisez "for loop" insérez les données avec la commande ci-dessous :

for i in *;
do
    $sed '/ijkl/r add.txt' $i
done

Dans le code ci-dessus * représente les fichiers. Pour chaque fichier, en tant que $i, ajoutez le contenu du fichier add.txt après que le modèle "ijkl" soit trouvé.

Étape 5 :Copiez les fichiers de Linux vers Windows vers Cpanel

La dernière étape consiste à recopier les fichiers modifiés du serveur Linux vers le système Windows local. Et puis utilisez scp ou ftp pour copier les fichiers du système Windows local vers cpanel.


Linux
  1. Script Shell pour déplacer les fichiers les plus anciens ?

  2. Linux - Récupération de données après la copie d'un fichier sur un périphérique bloqué ?

  3. Comment renommer plusieurs fichiers ensemble sous Linux en utilisant 3 méthodes

  4. Comment créer des fichiers fragmentés sous Linux à l'aide de la commande "dd"

  5. Script shell Linux pour ajouter des zéros non significatifs aux noms de fichiers

Comment diviser un gros fichier d'archive en plusieurs petits fichiers à l'aide de la commande Split sous Linux

Comment diviser un gros fichier d'archive en plusieurs petits fichiers à l'aide de la commande Split sous Linux

Comment partager des fichiers localement sur Linux en utilisant NitroShare

8 méthodes pour renommer plusieurs fichiers à la fois sous Linux

Comment synchroniser des fichiers dans les deux sens à l'aide du script Osync sous Linux

Créer des modèles avec Linux dans un script Shell ?