Comment encadrer chaque ligne d’un fichier entre guillemets avec sed?

C’est ce que j’ai essayé: sed -i 's/^.*/"$&"/' myFile.txt

Il met un $ au début de chaque ligne.

    C’est ici

     sed 's/\(.*\)/"\1"/g' 

    plus court

     sed 's/.*/"&"/' 

    sans espaces

     sed 's/ *\(.*\) *$/"\1"/' 

    sauter les lignes vides

     sed '/^ *$/d;s/.*/"&"/' 

    Vous avez presque bien compris. Essayez cette version légèrement modifiée:

     sed 's/^.*$/"&"/g' file.txt 

    Vous pouvez également le faire sans groupe de capture:

     sed 's/^\|$/"/g' 

    ‘^’ correspond au début de la ligne et ‘$’ correspond à la fin de la ligne.

    Le | est une “alternance”, cela signifie simplement “OU”. Il doit être échappé ici [1], donc en anglais ^\|$ signifie “le début ou la fin de la ligne”.

    “Remplacer” ces caractères est bien, cela ajoute du texte au début à la fin, nous pouvons donc remplacer " , et append le g à la fin pour une recherche globale pour correspondre aux deux à la fois.

    [1] Malheureusement, il s’avère que | ne fait pas partie des “expressions régulières de base” de POSIX, mais fait partie des fonctionnalités “améliorées” qui peuvent être compilées avec le drapeau REG_ENHANCED, mais n’est pas par défaut sur OSX; s/^\(.*\)$/"\1"/

    Humble tarte pour moi aujourd’hui.