Actuellement, j'ai un fichier avec plusieurs colonnes et sur mes 4,5èmes colonnes, les valeurs NULL sont affichées comme *
J'ai essayé p> pour < / p> Ils courent, mais ne pas imprimer quoi que ce soit (mais je sais qu'il y a * valeurs dans le fichier) p> et repose ils obtiennent une erreur de syntaxe ou erreur de regex p> Que puis-je faire pour résoudre ce problème ??? p> p>
3 Réponses :
awk code> Les chaînes sont enfermées dans des guillemets doubles. Le script awk code> est normalement mis en guillemets simples, et si vous utilisez également des guillemets simples autour des chaînes AWK CODE>, ils terminent la chaîne de shell, ne délimit pas la chaîne AWK (et Shell Citations simples ne fournissez aucun mécanisme d'échappement). awk '{if ($4 == "*") print}' filename
Si vous avez vraiment lavé, vous pouvez utiliser une regex; si ($ 4 ~ '/ ^ \ \ \ * $ /) code>. Je ne recommande pas cela; Je souligne juste comment utiliser correctement des barres obliques. Notez l'opérateur ~ code> au lieu de == code> et de la barre oblique inverse pour échapper à l'astérisque, sinon un métacaracter dans Regex.
Peut-être aussi expliquer comment si ($ 4 == '*') code> est transmis comme si ($ 4 == *) code> (qui est évidemment une erreur de syntaxe) une fois que la coque a géré les citations simples et Awk est sur le point de commencer à exécuter.
@tripleee j'ai ajouté une phrase sur la manière dont les citations simples terminent la chaîne de coque.
J'utiliserais la fonction Le programme ci-dessus utilise la fonction index () code>: index (s, t) code> renvoie la position de la sous-chaîne t code> dans s code> ou 0 code> si t code> n'a pas été trouvé dans s code>. p> index () code> comme une condition. awk code> imprimera la ligne en cours si cette condition devient true-ish. 0 code>, non trouvé, est faux-ish dans awk. Une version plus explicite du programme ci-dessus serait: p>
Utiliser un motif AWK pour mettre en œuvre la condition
Vous n'utilisez pas motifs i>
Dans les programmes 'AWK', chaque énoncé envisage de prendre en compte "modèle {action-déclaration}". Le motif peut être regex, expressions, etc. ne faisant pas référence au modèle de nom de fichier Bash.
j'ai compris. La page Man fait effectivement référence à ces conditionnels que modèles i>, ne savait pas que