300個のテキストファイルから4行目を抽出する方法


-1

私はこのようになる約300通の電子メール(gmail)を持っています。

[name]様

注文ID:123456789   購入者:[必要な名前]

(あと26行のがらくた(合計30行))

手助けが必要なのは、gmailのメールをローカルで.txtに保存する方法と、各テキストファイルから4行目をエクスポートする方法です。それを削除してリスト内のその行の名前だけを残すにはReplace 'Purchased by:'を簡単に実行できますが、それ以外に手掛かりがありません。

何か案は?


これをどのシステムで実行しますか?
private_meta

Googleのデータツールを使ってメールをMBOXフォーマットにエクスポートしてから、 grep -e 'Order ID:\d* Purchased by' そして sed 's/Order ID:\d+ Purchased by:\s+//' 名前を抽出します。
Eugen Rieck

Windows 7、私はそのショットをあげる
Twoopah

回答:


1

gmailメッセージをMBOXフォーマットでエクスポートします(ヒント: https://support.google.com/accounts/answer/3024195?hl=ja )をmessages.txtとして保存します。

からGNU Awk(gawk.exe)を入手してください。 http://gnuwin32.sourceforge.net/packages/gawk.htm

以下をgetnames.awkとして保存します。

/^Order ID:.*Purchased by:/ {
  sub("^.+ by: ","");
  print;
}

次をnames2csv.awkとして保存します。

/^Order ID:.*Purchased by:/ {
  sub("^.*Order ID:[^0-9]*","");
  sub("[^0-9]*Purchased by: ",",");
  print;
}

上記のスクリプトとメッセージを入手したので、テキストファイルとして名前のリストを取得します。

gawk -f getnames.awk messages.txt > names.txt 

これにより、IDと名前を.CSVファイルとして注文できます。これは、お気に入りのスプレッドシートソフトウェアで開くのに適しています。

gawk -f names2csv.awk messages.txt > orders.csv

1

Gmailから直接データを抽出して解析し、MsgExtractを使用してExcelシートまたはXML、CSVなどの他の形式に保存できます。

あなたの場合、あなたはTextPartフィールドを定義し、角括弧[]の間で名前だけを抽出するために次の正規表現を使うべきです:

(?s)(?<=(by:。[))。+(?=])

たとえば、「Purchased by:[name is need]」というテキストを取得する場合は、次の式を使用します。

(?s)購入しました。+]

次のリンクでMsgExtractの正規表現についてさらに学ぶことができます。

http://docs.maildev.com/article/69-parse-email-data-using-regular-expressions

http://www.maildev.com/msgextract/

(免責事項、私はMsgExtractの作者です)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.