Je suis assez nouveau à l'expression régulière et j'ai juste commencé à apprendre à utiliser awk. Ce que je suis en train d'accomplir est d'écrire un script ksh à lire dans les lignes de texte, et ainsi que pour toutes les lignes qui correspondent à ce qui suit:Comment utiliser regex pour correspondre à ASTERISK dans awk
* RECORD 0000001 [s #]
pour remplacer 2 $ (c.-à-000001) avec un nombre différent. Donc, essentiellement, le script lit en sauvegarde d'enregistrement de lot, et remplace le numéro d'enregistrement par date + record #, et écrit dans un fichier séparé.
donc ce que je pense le format devrait être:
awk 'match($0,"/*RECORD")!=0{$2="$DATE-n++"; print $0} match($0,"/*RECORD")==0{print $0}' $BATCH > $OUTPUT
mais il est évident «/* RECORD » ne va pas travailler, et je ne sais pas si le changement de 2 $ puis écrire le ligne entière est la bonne façon de le faire. J'ai donc besoin de quelques éclaircissements sérieux.
D'où vient "FTR"? Voulez-vous "$ DATE" littéralement ou pour remplacer une date? Est-ce que "n ++" est littéral ou voulez-vous incrémenter une variable? –
Désolé à ce sujet. J'ai édité le post original maintenant. Ce code était à l'origine pour d'autres scripts, que j'ai oublié de changer le VAR. $ DATE est une variable que je vais définir dans le script, et n ++ juste var incrémentielle, en partant de là où j'ai défini plus tôt dans le script, qui est omis ici. –