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
最後の行は最初のフィールドではなく2番目のフィールドなので間違っています。意図された出力は
first record, first field
second record, first field#
1
また、必要な出力の例を提供して
—
いただけ
あなたのデータは次のようになり
—
Skaperen 2015年
line one#line two#line three
ますか?
そして
—
Skaperen 2015年
RS="#"
何をしますか?
@Skaperenいいえ、データは次のように
—
Ernest A
#\nrecord one\n#\nrecord two
なり、各レコードは複数の\n
区切られたフィールドで構成されます。
RS='#\n'
afaikは動作するはずですが、イニシャル#
は空のレコードの終了として扱われます(つまり、すべてのNR
値が1つ「オフ」になります)