0

sed を使用してテキスト ファイルを編集しようとしています。テキスト ファイルは、実際には .txt 形式でメールに送信された SMS テキスト メッセージですが、形式がきれいではありません。ご協力いただきありがとうございます。たとえば、特定の行:

TO YOUDate : 06/12/2013 09:52:55 AMHi can u pls pick up some bread from the store. TO :   Contact NameDate : 06/12/2013 10:00:10 AMI can in about 15 minutes. I'm still in a meeting.

上記の行は、.txt ファイルの残りの行がどのようにフォーマットされるかを表しています。行を TO で開始し、行の完了 (次の TO まで) で終了するようにしたいと考えています。

そのようです:

TO YOUDate : 06/12/2013 09:52:55 AMHi can u pls pick up some bread from the store.
TO :   Contact NameDate : 06/12/2013 10:00:10 AMI can in about 15 minutes. I'm still in a meeting.

次のコマンドがうまくいくと思いましたが、TO が見つかった後に新しい行が作成されます。

sed '/TO/ a\
new line string' myfile.txt
4

3 に答える 3

2

使用python:

>>> import re
>>> spl = "TO"
>>> strs = "TO YOUDate : 06/12/2013 09:52:55 AMHi can u pls pick up some bread from the store. TO :   Contact NameDate : 06/12/2013 10:00:10 AMI can in about 15 minutes. I'm still in a meeting."
>>> lis = re.split(r'\bTO\b',strs)[1:]
for x in lis:
    print "{}{}".format(spl,x)
...     
TO YOUDate : 06/12/2013 09:52:55 AMHi can u pls pick up some bread from the store. 
TO :   Contact NameDate : 06/12/2013 10:00:10 AMI can in about 15 minutes. I'm still in a meeting.
于 2013-07-01T18:14:47.760 に答える
1
sed 's|TO|\nTO|g'

最後のパラメーター「g」は、「TO」をグローバルに置き換えます。そのため、メッセージに「TO」文字列が含まれていないことを確認してください。

于 2013-07-01T19:01:48.807 に答える