6

私はこのようなテストファイルを持っています

fdsf fdsf fdsfds fdsf
fdsfdsfsdf fdsfsf
fsdfsdf var12=1343243432

fdsf fdsf fdsfds fdsf
fdsfsdfdsfsdf
fsdfsdf var12=13432434432

fdsf fdsf fdsfds fdsf
fsdfsdf fdsfsf var12=13443432432

var12=\d+ここで、レコード区切り文字として使用したいと思います 。これはawkで可能ですか?

4

2 に答える 2

8

はい。ただし、次[0-9]の代わりに使用する必要があり\dます。

awk '1' RS="var12=[0-9]+" file

IIRCは、GNU awk複数文字のレコード区切り文字のみを使用できます。

結果:

fdsf fdsf fdsfds fdsf
fdsfdsfsdf fdsfsf
fsdfsdf 


fdsf fdsf fdsfds fdsf
fdsfsdfdsfsdf
fsdfsdf 


fdsf fdsf fdsfds fdsf
fsdfsdf fdsfsf 

さらにサポートが必要な場合は、希望する出力を投稿してください。

于 2013-02-07T02:22:40.267 に答える
4

LinuxでGNUawk(別名)を想定すると、そうです。gawk

RS

これはawkの入力レコード区切り文字です。デフォルト値は、単一の改行文字を含む文字列です。これは、入力レコードが1行のテキストで構成されていることを意味します。null文字列の場合もあります。この場合、レコードは空白行で区切られます。正規表現の場合、レコードは入力テキストの正規表現の一致によって区切られます。

出典: 7.5.1制御する組み込み変数awkGNUAwkユーザーズガイド

@steveが言うように、は正規表現演算子または特定の正規表現演算子\dのリストに含まれていないため、の代わりに、またはの代わりに角かっこ式を使用する必要があります。gawk[0-9][[:digit:]]\d

しかし、ここでのあなたの意図が何であるかについてのあなたの質問からは明らかではありません。私はあなたの質問に答えましたが、私はあなたの根本的な問題を解決したとは思えません。XY問題とは何ですか?も参照してください。

于 2013-02-07T02:21:10.137 に答える