Je lisais ce script awk
awk -F"=" '{OFS="=";gsub(",",";",$2)}1'
Je veux savoir quelle est la fonction 1
à la fin
linux
shell-script
awk
Mirage
la source
la source
awk -F"=" '{OFS="=";gsub(",",";",$2)}{print}'
Réponses:
Un
awk
programme est une série de paires condition-action, les conditions étant en dehors des accolades et les actions qui y sont enfermées. Une condition est considérée comme fausse si elle est évaluée à zéro ou à la chaîne vide, tout le reste est vrai (les variables non initialisées sont nulles ou à chaîne vide, selon le contexte, elles sont donc fausses). Une condition ou une action peut être implicite; les accolades sans condition (comme la vôtre commence) sont considérées comme ayant une vraie condition et sont toujours exécutées si elles sont atteintes, et toute condition sans action imprimera la ligne si et seulement si la condition est remplie.À
1
la fin de votre script est une condition (toujours vraie) sans action, il exécute donc l'action par défaut pour chaque ligne, imprimant la ligne (qui peut avoir été modifiée par l'action précédente entre accolades).la source
Je n'aime vraiment pas ces types de raccourcis, car cela obscurcit et induit en erreur la façon dont il est analysé. Lorsque vous lisez quelque chose comme
awk -F"=" '{OFS="=";gsub(",",";",$2)}1'
, vous pourriez penser que le1
modifie la déclaration précédente. Ou vous pourriez penser qu'il1
s'agit d'un alias{print}
, qui n'est pas techniquement correct.En fait,
1
c'est une déclaration complètement distincte. Vous pouvez séparer les déclarations comme ceci:Chaque format d'instruction awk est
condition {action}
. S'il n'y a pas de{action}
donnée, alors l'action par défaut est{print}
. (S'il n'y a pas decondition
donnée, alors la condition par défaut esttrue
.)Voici donc
1
la condition, qui est toujours évaluéetrue
car elle est non nulle. Leaction
est omis, donc la valeur par défaut{print}
est effectuée. Vous pouvez y penser de cette façon:la source
1
signifie imprimer chaque ligne.L'instruction awk est identique à l'écriture:
la source