Bash - Traitement d'un fichier
Résolu
Remad
Messages postés
1662
Date d'inscription
Statut
Membre
Dernière intervention
-
Remad Messages postés 1662 Date d'inscription Statut Membre Dernière intervention -
Remad Messages postés 1662 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous!
Voila, je cherche comment remplacer une ligne par un @, puis après supprimer toutes les lignes du fichier qui commencent par un @. En gros, voici le code:
Merci d'avance!
Voila, je cherche comment remplacer une ligne par un @, puis après supprimer toutes les lignes du fichier qui commencent par un @. En gros, voici le code:
chmod -R 700 $HOME/backup #restore the write permission on the folder for ARG in "$@" #for every parameters do line=$(awk "NR==$ARG" $HOME/backup/.backup) input=${line%»*} #delete the "»" at the end input=${input#* -> «} #delete the beginning until " -> «" output=${line%» -> *} #delete from "» -> *" output=${output#*«} #delete the "«" at the beginning mv -iv $input $output >> /dev/null #restore the file, no text messages #TODO comment remplacer la ligne par un @? done #TODO comment supprimer toutes les lignes qui commencent par un @? chmod -R 500 $HOME/backup #restore the limited permissions
Merci d'avance!
A voir également:
- Bash - Traitement d'un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
3 réponses
Salut,
je cherche comment remplacer une ligne par un @, puis après supprimer toutes les lignes du fichier qui commencent par un @
Euh... pourquoi ne pas supprimer la ligne directement ??? ;-\
je cherche comment remplacer une ligne par un @, puis après supprimer toutes les lignes du fichier qui commencent par un @
Euh... pourquoi ne pas supprimer la ligne directement ??? ;-\
Salut,
Pourquoi pas continue avec bash?
#TODO comment remplacer la ligne par un @?
Si la suppression ne marche pas avec sed alors essaie avec perl
Pourquoi pas continue avec bash?
#TODO comment remplacer la ligne par un @?
line=${line//*/@}
Si la suppression ne marche pas avec sed alors essaie avec perl
$ cat plop dsfsdf @dsfdsjfdlsdfj dsfjdjsfldsf @sdfdsfds dsfdsf $ perl -pi.orig -e 's/^@.*\n//' plop $ cat plop dsfsdf dsfjdjsfldsf dsfdsf $ cat plop.orig dsfsdf @dsfdsjfdlsdfj dsfjdjsfldsf @sdfdsfds dsfdsf
J'ai trouvé la réponse!
Maintenant, il faut juste que je vérifie que le(s) paramètres est(sont) valide(s). J'avais pensé à sa:
Mais sa ne fonctionne pas... Une idée?
chmod -R 700 $HOME/backup #restore the write permission on the folder for ARG in "$@" #for every parameters do line=$(awk "NR==$ARG" $HOME/backup/.backup) input=${line%»*} #delete the "»" at the end input=${input#* -> «} #delete the beginning until " -> «" output=${line%» -> *} #delete from "» -> *" output=${output#*«} #delete the "«" at the beginning mv -iv $input $output >> /dev/null #restore the file, no text messages sed -i "s|$line|@|" $HOME/backup/.backupfile #replacing the line with "@" done sed -i '/^@/d' $HOME/backup/.backupfile #deleting all the "@" lines chmod -R 500 $HOME/backup #restore the limited permissions
Maintenant, il faut juste que je vérifie que le(s) paramètres est(sont) valide(s). J'avais pensé à sa:
chmod -R 700 $HOME/backup #restore the write permission on the folder
nbline=$(wc -l $HOME/backup/.backupfile) #check how many lines there is on the .backupfile file
nbline=${nbline% *} #take only the number
echo "nbline = $nbline"
for ARG in "$@" #for every parameters
do
if [[ "$ARG" == [0-"$nbligne"] ]] # if the parameter is correct
then
line=$(awk "NR==$ARG" $HOME/backup/.backupfile)
input=${line%»*} #delete the "»" at the end
...
Mais sa ne fonctionne pas... Une idée?
Ok. Alors le plus simple c'est encore de comparer la valeur de ton paramètre (est inférieur ou égal) par rapport au nombre maximal de lignes dans ton fichier, comme ça :
;-))
$ cat foo.sh #! /bin/bash count=10 for arg in "$@" do if [[ $arg -le $count ]] then echo "Argument $arg correct." else echo "Argument $arg incorrect." fi done $ ./foo.sh 2 9 11 5 3 15 Argument 2 correct. Argument 9 correct. Argument 11 incorrect. Argument 5 correct. Argument 3 correct. Argument 15 incorrect. $
;-))
Donc pour remplacer :
Pour supprimer :