1

それぞれが 1 行を超える何百ものレコードを含むテキスト ファイルを解析する必要があります。私はPythonを初めて使用し、いくつかの複雑な方法でgrepとawkを使用してこれを実行しようとしましたが、まだ運がありません. このファイルには、次のようなレコードが含まれています。

409547095517 911033 00:47:41 C44 00:47:46 D44 00:47:53 00:47:55 (555) 555-1212 00:47 10/31 100 メイン ストリート - NW
Some_City TX 323 WRLS METRO PCS
P# 122 -5217 ALT# 555-555-1212 LEC:MPCSI 無線通話 発信者の場所の問い合わせ 発信者の電話番号の問い合わせ #*

本当に、これらの複数行のレコードを 1 つのレコードにつき 1 行に凝縮できれば、必要なことはすべて実行できます。各レコードは常に「40」で始まります。または、9110 に開始を示すようにすることもできます。これらは常にそこにあり、40 が行の先頭にある場合は一意であるためです。HEX エディターを使用したところ、すべての改行 (hex 0D0A) を削除できることがわかりましたが、これはファイルを手動で編集するよりも良くなく、プログラムでレコードごとに最後のものを削除する必要はありません。一部のレコードは 2 行のみですが、ほとんどはこのように 5 行になります。

レコードを構成する行を 40 または 9110 がレコードの開始を示す 1 行に連結する方法はありますか?

どんなアイデアや指針も大歓迎です。私はPythonと優れたIDEを持っています.grepとfindは得意ですが、awkを学んでいます(笑わないでください)...

4

1 に答える 1

3

awkはそれを行います。レコードを開始する行を特定する必要があります。この場合、409547095517 安全のために、行が 8 つの数字で始まる場合、それがレコードの始まりであると仮定しましょう。

awk ' NR> 1 && /^[0-9]{8}/ { printf("\n") }  
      {printf("%s", $0) } 
       END{ printf("\n") }'  filename > newfilename

を適切な番号に変更{8}します。

于 2012-12-27T03:01:29.250 に答える