de toute façon, nous pouvons changer le délimiteur qui utilise grep?
Je pense que, par défaut, grep utilise \n
comme délimiteur.
linux
shell-script
grep
studiohack
la source
la source
$/
) et awk (RS
). Ou vous pourriez faire quelque chose comme çaecho "$var" | sed 's/<delimiter>/\n/' | grep <pattern>
. Beaucoup de réponses, selon votre problème réel.Réponses:
Si vous vous souciez de la sortie, cela
tr
pourrait fonctionner pour vous:la source
echo $my_var | tr @ '\n' | grep blahblah
$my var
pour conserver les espaces blancs et les retours à la ligne, c'est-à-direecho "$my_var" | ...
.agrep
de l'Université de l'Arizona vous permet de définir le délimiteur. Ce n'est pas un remplacement direct pour grep; il utilise un algorithme différent (grep approximatif, peut correspondre à des erreurs) et a une syntaxe de modèle différente. Mais c'est un outil pratique.Malheureusement, je pense
agrep
qu'en raison de problèmes de licence, plusieurs projets similaires ont été appelés et ils ne sont pas tous compatibles. Mais je pense que toutes les versions vous permettent de définir un délimiteur.la source
la source
d="${1}"
au lieu de justed="$1"
? (2) Vous devez étendre votre avertissement: s'il est utilisé avec plusieurs fichiers, vous avez également un problème si l'un des noms de fichiers contient «@». (3) (Nit pick) Un véritable remplacement / émulateur «grep» fonctionnerait également avec zéro argument de fichier.Remplacez le délimiteur zéro ('@') par une nouvelle ligne (\ n) avant grep:
la source
Comment c'est ? Une utilisation?
Réglez «@» sur ce qui convient à vos besoins.
la source