Comment faire pour supprimer CTRL-UN des caractères à partir d'un fichier à l'aide de SED?
Je veux enlever tous les "^" Un des caractères de contrôle à partir d'un fichier à l'aide de SED. Je peux supprimer tous les caractères de contrôle à l'aide de sed s/[[:cntrl:]]//g " mais comment puis-je spécifier "^A" en particulier?
à reproduire "^A", appuyez simplement sur Ctrl-v Ctrl-un ce sera de reproduire le ^A dans le fichier
sed -i -e 's/^A/BLAH/g' testfile
la ^A dans cette ligne est le résultat de m'appuyant sur Ctrl-v Ctrl-a
Je déconseille de faire cela, parce que vous ne serez pas en mesure de facilement copier et coller, de le mettre dans un script, modifier le script avec un éditeur, et ainsi de suite. Vous pouvez faire ctrl-v ctrl-a vi et enregistrez le fichier avec le bon ^Un. Copier et coller avec le GUI coller le tampon est la seule chose que vous ne pouvez pas le faire.
^Est un octet 1 ou \x01 donc vous devriez être en mesure de le faire:
sed 's/\x01//g'
Garder à l'esprit que pour un seul octet changements, "tr" est plus rapide que sed, bien que vous aurez à utiliser bash est $'..' syntaxe pour lui donner un 0x01 octet:
tr -d $'\x01'
Vous pouvez taper un littéral dans une chaîne entre guillemets dans Bash en préfixant avec C-v: tr -d 'C-vC-a', où vous littéralement appuyez sur ctrl-v et de les contrôler à-un. Ce travail est pour moi avec le tr, mais pas le SED. Essayez d'utiliser le $'' dans sed trop: sed $'s/\x01//g' Vous êtes de droite. C'est le travail avec le sed. Pour une raison quelconque, il ne fonctionne pas sur mon mac, par elle fonctionne sur ubuntu. de façon portable modifier un fichier en place, ne pas utiliser Sed à tous; utiliser des “ex”, qui est spécifiée par POSIX. J'ai écrit beaucoup de réponses à l'aide de “ex” si vous avez besoin d'exemples.
à reproduire "^A", appuyez simplement sur Ctrl-v Ctrl-un ce sera de reproduire le ^A dans le fichier
la
^A
dans cette ligne est le résultat de m'appuyant sur Ctrl-v Ctrl-aVous pouvez faire ctrl-v ctrl-a vi et enregistrez le fichier avec le bon ^Un. Copier et coller avec le GUI coller le tampon est la seule chose que vous ne pouvez pas le faire.
OriginalL'auteur Eric
^Est un octet 1 ou
\x01
donc vous devriez être en mesure de le faire:Garder à l'esprit que pour un seul octet changements, "tr" est plus rapide que sed, bien que vous aurez à utiliser bash est
$'..'
syntaxe pour lui donner un 0x01 octet:tr -d 'C-vC-a'
, où vous littéralement appuyez sur ctrl-v et de les contrôler à-un.Ce travail est pour moi avec le tr, mais pas le SED.
Essayez d'utiliser le
$''
dans sed trop:sed $'s/\x01//g'
Vous êtes de droite. C'est le travail avec le sed. Pour une raison quelconque, il ne fonctionne pas sur mon mac, par elle fonctionne sur ubuntu.
de façon portable modifier un fichier en place, ne pas utiliser Sed à tous; utiliser des “ex”, qui est spécifiée par POSIX. J'ai écrit beaucoup de réponses à l'aide de “ex” si vous avez besoin d'exemples.
OriginalL'auteur Tobia