您如何告诉awk #
在一行中单独使用一个字符作为记录分隔符?问题是您不能说RS="^#$"
是因为^
匹配文件的开头而不是行的开头,并且RS="#\n"
也不能工作,因为它匹配#
的不是行首的字符。
$ data='#
first record, first field
first record, second field
#
second record, first field#
second record, second field
'
然后使用以下命令打印每个记录的第一个字段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
最后一行是错误的,因为它不是第一字段,而是第二字段。预期的输出是
first record, first field
second record, first field#
1
您能否提供所需输出的示例
—
roaima
所以你的数据看起来像
—
Skaperen 2015年
line one#line two#line three
什么?
和
—
Skaperen 2015年
RS="#"
做什么?
@Skaperen不,数据看起来像
—
欧内斯特
#\nrecord one\n#\nrecord two
,每个记录由多个\n
分隔的字段组成。
RS='#\n'
应该可以使用afaik-尽管它将初始值#
视为终止一个空记录(即所有NR
值将被“ off”一个)