caractères spéciaux dans sed

Caractères spéciaux dans les commandes SED

Notation fractionnée SED

Par défaut, le séparateur de sed est une barre oblique inverse (/), telle que 's/abc/xyz/g', qui remplacera abc par xyz, comme indiqué ci-dessous :

echo "this is abc" | sed 's/abc/xyz/g'
this is xyz

S'il y a un séparateur dans la source d'entrée, nous devons échapper le séparateur, comme suit :

echo "this is /a/b/c" | sed 's/\/a\/b\/c/\/x\/y\/z/g'
this is /x/y/z

Cette fonction peut être réalisée, mais elle a l'air un peu éblouissante, et elle est difficile à lire si elle est plus longue, surtout lorsque la source d'entrée a un chemin, elle a l'air plus désordonnée. Et si vous ne faites pas attention en écrivant, vous ferez une erreur. Si vous manquez une évasion, vous signalerez une erreur. Comme suit:

echo "this is /a/b/c" | sed 's//a\/b\/c/\x\/y\/z/g'
sed:-e 表达式 #1,字符 12:“s”的未知选项

S'il y a moins de caractères d'échappement devant a, sed signalera une erreur.
Sed autorise d'autres délimiteurs : quel que soit le caractère, le s suivant immédiatement sera considéré comme un délimiteur. comme

[zy@fedora ~]$ echo "this is /a/b/c" | sed 's#/a/b/c#/x/y/z#g'
this is /x/y/z
[zy@fedora ~]$ echo "this is /a/b/c" | sed 's@/a/b/c@/x/y/z@g'
this is /x/y/z
[zy@fedora ~]$ echo "this is /a/b/c" | sed 's!/a/b/c!/x/y/z!g'
this is /x/y/z
[zy@fedora ~]$ echo "this is /a/b/c" | sed 's|/a/b/c|/x/y/z|g'
this is /x/y/z
[zy@fedora ~]$ echo "this is /a/b/c" | sed 's_/a/b/c_/x/y/z_g'
this is /x/y/z

Ces caractères qui suivent immédiatement s (#, @, !, |, _) peuvent être utilisés comme séparateurs, et il sera beaucoup plus clair de les remplacer par cette expression. Il est recommandé d'utiliser la barre verticale (|). Bien sûr, s'il y a un séparateur dans le contenu source/sortie d'entrée, il doit toujours être échappé avec une barre oblique inverse.

Je suppose que tu aimes

Origine blog.csdn.net/EmptyStupid/article/details/127730010
conseillé
Classement