Je veux supprimer trois mots avec un caractère spécial sur une ligne telle que
entrée: p> sortie: p> J'ai essayé quelques déclarations SED et GREP, mais jusqu'à présent, aucun n'a travaillé, principalement en raison du caractère ma tentative infructueuse: p> \ code>. p>
4 Réponses :
awk accepte un séparateur de champ de regex (dans ce cas, une virgule ou un espace): Remplacer
-f '[]' code> - Utilisez un seul caractère à partir de l'espace
espace / virgule code> comme séparateur de champ li>
0 $ = 3 $ "." $ 4 code> - si nous pouvons définir la ligne entière
0 $ code> sur le champ 3
4 $ code> suivi d'une période littérale
"." Code> suivi de champ 4
4 $ code>, faites le comportement par défaut (imprimer une ligne entière) li>
ul>
<<< "entrée ' code> avec
fichier code> si chaque ligne de ce fichier a les mêmes délimètres (espaces / virgule) et nombre de champs. Si votre fichier d'entrée est plus complexe que l'exemple que vous avez partagé, veuillez modifier votre question pour afficher l'entrée réelle. P> p>
Pourriez-vous s'il vous plaît soyez si gentil comme pour m'expliquer ce que vous avez fait exactement là-bas que je me lance de comprendre cette commande. Cela fonctionnerait-il sur un fichier qui a plusieurs lignes?
Merci beaucoup! La source consiste en n lignes du même style, donc je dirais que ce n'est pas complexe
La barre oblique inverse est un méta-personnage spécial qui confond Bash.
Nous le traitons comme tout autre caractère méta, en l'évacuant, avec - vous l'avez deviné - une barre oblique inverse! P>
Mais d'abord, nous devons grep de ce modèle de notre fichier p> maintenant, il suffit ded côté ces backslashs pesky P> grep '\\... \\... [0-9]+,[0-9]+ \\... \\' our_file | sed -e 's/\\//g' | sed -e 's/[a-z][a-z][0-9] //g'
Merci beaucoup !!! Je cherche partout pour une explication réelle (oui, je sais qu'il y a beaucoup de documents et d'exemples largement disponibles, mais j'ai eu du mal à trouver la plupart d'entre eux d'essayer de comprendre la syntaxe)!
$ awk '{sub(/,/,".",$3); print $3}' file 1749.1789 $ sed 's/\([^ ]* \)\{2\}\([^ ]*\).*/\2/; s/,/./' file 1749.1789
Veuillez ajouter quelques commentaires pour expliquer comment votre code répond à la question afin d'améliorer cette réponse.
@Erichaauenstein Lorsque l'outil automatisé flagrie une réponse de code uniquement comme éventuellement b> de qualité inférieure si vous connaissez le domaine, lisez la réponse et apportez une décision éclairée si elle nécessite une documentation ou non et si cela ne doit pas Ensuite, B> Postez un commentaire utile. Si vous ne connaissez pas le domaine, comme apparemment, c'est le cas ici, puis vous déplacez simplement comme étant un tampon en caoutchouc. Le drapeau des outils ne fait que gaspiller le temps de tout le monde, y compris le vôtre et encombrer le site.
Je ne suis pas d'accord. Il est bien établi que les réponses de code seulement sont généralement améliorées par les commentaires expliquant comment et pourquoi ils travaillent et un critique n'a pas besoin de connaissances de domaine pour déterminer si des commentaires sont présents.
Vous êtes invités à être désaccord bien sûr, mais vous êtes totalement tort et ce n'est certainement pas «bien établi». Quelqu'un qui ne comprend pas un script absolument basique apprendra beaucoup plus d'un coup d'œil cuillère chez les pages de l'homme que d'être une cuillère de la nourriture, pourquoi ce script fonctionne et encombrant le site avec chaque réponse fournissant des descriptions des fondamentaux de chaque outil utilisé dans Chaque réponse serait ridicule.
Si un critique n'avait pas besoin de connaissances sur le domaine pour déterminer si des commentaires sont présents ou non et qu'ils manquent ont indiqué un problème alors que l'outil se dirigerait elle-même sur les réponses uniquement du code plutôt que de le signaler comme éventuellement b> Qualité pour les personnes avec la connaissance du domaine B> pour décider de la manière de gérer la réponse. Vous remarquerez que l'outil ne signale pas les réponses qui ont un code long et compliqué avec du texte qui n'explique pas réellement le code - si vous voulez faire quelque chose d'utile avec votre temps libre, trouvez ces réponses et commencez-y.
Cette réponse est discutée sur Meta . J'ai tendance à bien avec Eric ici, alors que ce n'est pas nécessaire que les commentaires pourraient améliorer la réponse, notamment noter Ce commentaire par l'OP. Bien sûr, votre réponse ne devrait pas être supprimée, mais quelque chose à propos de Donner à un homme un poisson vs lui apprendre à poisson I> semble applicable ici. Notez également: il a marqué ok ok i>
@Erika Ce commentaire de l'OP consiste à essayer de comprendre La logique compliquée devait utiliser SED + Grep pour résoudre ce problème, pas sur la compréhension des scripts triviaux que j'ai postés. I am b> Enseigner à un homme de pêcher ici - même en supposant que l'OP ne puisse pas le comprendre en un coup d'œil (que les personnes ayant une expérience AWK ou SED peuvent), j'enseigne à l'OP comment regarder Des constructions triviales de sorte que lorsqu'elle travaille plus tard et atteigne un certain code, elle ne comprend pas qu'elle sait comment le gérer.
En fait, tout va bien! Il n'y a plus besoin d'explication plus poussée sur ce sujet de mon côté, tout va travailler!
@Alandemoin Questions / Réponses ici ne sont pas destinées à être juste pour la prestation des internateurs, elles sont censées aider les futurs visiteurs. Tandis que vous n'avez peut-être pas besoin d'une explication plus poussée, les futurs visiteurs pourraient.
@Canon C'est définitivement Principé i> - La réponse est absolument fine comme - l'est et ne recevrait pas de bowvotes sinon pour ce méta-post. Il s'agit en train de devenir des uppostims, mais de plus en plus de bowvotes le traînent dans l'ensemble.
Personnellement, je n'ai pas l'expérience de domaine pour discerner si le code a le mérite de lui-même; Donc, je n'ai pas voté.
Logique. Le gars qui a commencé cette chaîne de commentaires est maintenant mieux informé et ne parlera que des réponses du code - uniquement dans les domaines qu'il ne comprend plus non plus que quelque chose de positif soit sorti de cela.
@Canon: Je crois que la plupart des habitués ont au moins une familiarité qui passe avec awk code> et
sed code>. Personnellement, je suis confondu par l'utilisation d'un point-virgule dans la commande
SED code> et pense certainement que la réponse bénéficierait d'une autre explication supplémentaire. Mais c'est pourquoi j'ai tendance à éviter [Bash], c'est trop «Gate-Keey» pour moi.
@Aksela Un demi-côon sépare des déclarations. Il s'agit de l'un des 2 décisions communes utilisées dans toutes les coquilles et toutes les commandes Shell, l'autre étant une nouvelle ligne.
@Aksela Une réponse à un problème spécifique n'a pas besoin d'expliquer toute la syntaxe de la langue (encore et encore). Si vous ne savez pas ce que le point-virgule fait, que ce soit Google, devez-le ou postez simplement un commentaire sous la réponse et demandez des éclaircissements. Mais généralement, je conviens que quelques phrases d'explication rendraient cette excellente réponse encore mieux
@Aksela l'a mis sur l'enquête de développement de l'année prochaine et découvrons.
Je suppose que vous avez des problèmes car vous avez des revenus en entrée et vous ne pouvez pas comprendre comment vous remettre en arrière dans votre regex. Depuis que les backslashes sont des caractères d'évacuation vers Shell et Regex, vous devez avoir à saisir quatre backslashes pour en obtenir un dans votre regex.
Ben Van Camp a déjà posté une réponse qui utilise des guillemets simples pour que les guillemets utilisent un peu plus facile; Cependant, je vais maintenant poster une réponse qui évite tout simplement le problème tout à fait. p> se verrouille sur la virgule et sélectionne les chiffres de chaque côté et génère le numéro. Alternativement si la virgule n'est pas garantie, nous pouvons le faire de cette façon: P> egrep -o ' [0-9,]*|^[0-9,]*' | tr , . | tr -d ' '