Wie weist man awk an, ein #
Zeichen in einer Zeile als Datensatztrennzeichen zu verwenden? Das Problem ist, dass Sie nicht sagen können, RS="^#$"
weil es ^
mit dem Anfang der Datei und nicht mit dem Anfang einer Zeile RS="#\n"
übereinstimmt und auch nicht funktioniert, weil es mit #
Zeichen übereinstimmt , die nicht am Anfang einer Zeile stehen.
$ data='#
first record, first field
first record, second field
#
second record, first field#
second record, second field
'
Drucken Sie dann das erste Feld jedes Datensatzes mit 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
Die letzte Zeile ist falsch, weil es nicht das erste Feld ist, sondern das zweite. Die beabsichtigte Ausgabe war
first record, first field
second record, first field#
line one#line two#line three
?
RS="#"
was?
#\nrecord one\n#\nrecord two
und jeder Datensatz besteht aus mehreren \n
getrennten Feldern.
RS='#\n'
sollte afaik funktionieren - obwohl es die Initiale #
so behandelt, als würde ein leerer Datensatz beendet (dh alle NR
Werte werden um eins "aus" sein)