Comment dites-vous à awk d'utiliser un #
caractère seul dans une ligne comme séparateur d'enregistrement? Le problème est que vous ne pouvez pas le dire RS="^#$"
car ^
correspond au début du fichier, pas au début d'une ligne, et RS="#\n"
ne fonctionne pas non plus car il correspond à des #
caractères qui ne sont pas au début d'une ligne.
$ data='#
first record, first field
first record, second field
#
second record, first field#
second record, second field
'
Imprimez ensuite le premier champ de chaque enregistrement en utilisant RS="#\n"
:
$ printf "%s" "$data" | awk '
BEGIN { RS="#\n"; FS="\n" }
/./ {print $1}
'
first record, first field
second record, first field
second record, second field
La dernière ligne est fausse car ce n'est pas le premier champ mais le second. La sortie prévue était
first record, first field
second record, first field#
line one#line two#line three
?
RS="#"
fait quoi?
#\nrecord one\n#\nrecord two
et chaque enregistrement se compose de plusieurs \n
champs séparés.
RS='#\n'
devrait fonctionner afaik - bien qu'il traite l'initiale #
comme mettant fin à un enregistrement vide (c'est-à-dire que toutes les NR
valeurs seront "désactivées" par un)