Comment puis-je supprimer le début d'un mot en utilisant grep? Ex: J'ai un fichier contenant: J'ai seulement besoin de la partie p> désolé pour la question de base. Mais n'avez aucune expérience avec Linux. P> p>
6 Réponses :
Vous devriez examiner quelque chose comme grep code> n'est pas utilisé pour manipuler / modifier le texte, uniquement pour rechercher des textes / motifs dans le texte p>
sed code> ou
awk code> ou
couper code> si vous souhaitez qu'un outil de ligne de commande le fasse. Ou écrire un script à Python / Perl / Ruby / Whase. P>
Vous ne modifiez pas les chaînes avec vous devez apprendre des expressions régulières pour l'utiliser efficacement . P> SED peut également modifier le fichier en place (modifier le fichier), si vous passez de vos commentaires devinez que vous avez un document TEX et que vous souhaitez supprimer la première partie de tous les noms de domaine .com. Si c'est votre document alors vous pouvez le transformer avec cette commande Veuillez noter que: p> grep code> dans UNIX Shell,
grep code> est généralement utilisé pour rechercher ou supprimer certaines lignes du texte. Vous préférez utiliser
sed code> à la place:
-i < / Code> Argument, mais soyez prudent, vous pouvez facilement perdre des données si vous écrivez la commande erronée
sed code> et utilisez
-i code> drapeau. p>
un exemple h2>
test.tex code>: p>
sed code> (sortie de redirection Pour déposer ou modifier en place avec
-i code>): p>
[A-Z0-9 -] \ + \ \. code> li> li>
\ ( code> et
\ \) code>) pour indiquer la première et la deuxième partie de l'URL, et je remplace tout le match avec son deuxième groupe (
\ 2 code> dans le motif de substitution) li>
\ + code> signifie au moins une correspondance) li>
i code> drapeau à la fin) li>
g code> drapeau à la fin) li>
ul> p>
Les URL sont enregistrées dans un fichier. Donc, ma commande sera: grep '\. Com $' source.text> dest.tex | sed 's /^[^\\]\+\.//' ?? Ça me donne une erreur ??
J'ai aussi besoin d'écrire les noms (ce sont de nombreuses lignes non une) dans un autre fichier texte après avoir supprimé www.
J'ai essayé de deviner quelle est votre tâche et a écrit un exemple d'un code> SED code> regex pour éditer des noms de domaine dans le document, sans toucher le reste des lignes. Si votre problème est différent, vous aurez peut-être besoin d'une différence différente, mais dans l'ensemble, l'idée est la même.
Normalement, vous refaire soit le fichier (> dest.tex code>) ou simplement utiliser le tuyau (
| sed ... code>), mais pas les deux. Vous n'avez pas besoin
grep code> si vous souhaitez modifier certaines lignes mais gardez le reste. Une regex soigneusement écrite et
sed code> est probablement tout ce dont vous avez besoin.
Sur la commande MacOS, la commande sed code> ne fonctionne pas identique à la version Linux. Mais vous pouvez utiliser cette version plus simple sur le Mac, sans expressions régulières:
echo www.example.com | SED "S / www .// "< code> - il remplacera
" www. " code> avec la chaîne vide
" " code>.
Comme les autres ont noté, grep code> n'est pas bien adapté à cette tâche,
sed code> est une bonne option ou si le texte est bien commandé un simple
CUT code> peut être plus facile à taper:
echo www.abc.com | cut -d. -f2-
-d. code> indique
couper code> pour utiliser
. code> comme délimiteur. li>
-f2 - code> indique
couper code> pour renvoyer le champ 2 à l'infini. Li>
ul> p>
Vous pouvez le faire en utilisant au lieu de J'ai utilisé ici l'expression régulière '[^.] *. Com'. Cela signifie: trouvez-moi un mot sans grep code> facilement:
echo code> Vous devez donner votre fichier. P> < Pré> xxx pré>
. Code> dans celui-ci (
[^.] * Code>), après quoi
.com code> (
\ .com code> en re). La touche
-o code> indique que
grep code> ne doit afficher que cette partie trouvée. P> p>
Vous pouvez réellement faire cela sans appeler d'autres programmes, en utilisant une expansion de paramètres intégrée dans Bash: où Vous pouvez afficher une feuille de triche avec les différentes extensions de paramètres pour bash ici: p> https://devhintS.io/bash p> p> # *. code> indique à la coquille de retirer le préfixe qui ressemble à 0 ou plusieurs caractères suivis d'un
. code>. p>
de Grep - Seul-correspondant code> et \ k code> Vous pouvez le faire avec un de Grep - Seul-correspondant code> drapeau : p> xxx pré> qui peut être raccourci vers p> xxx pré> les deux commandes produisent p>
abc.com p>
blockquote>
avec grep (gnu grep) 3.3. p>
au lieu de echo code>, je vais utiliser un ici String Pour raccourcir la commande en outre: p> xxx pré> \ k code> réinitialise le point de départ du match, oubliant essentiellement le "www". ". Voir Ce pour plus d'informations sur \ k code> . P> avec l'apparence positive de Grep h1>
Vous pouvez également le faire avec un LOOKEDEWIND POSITIVE : P>
awk -F 'www.' <<< "www.abc.com" '$2{print $2}'
Utilisez Sed au lieu de grep.