電子メールが表示された後、一部のテキストが表示される前にすべてを分割する方法が必要です。
例の形式は次のとおりです。
[email protected]:0:3rw3e:weofkew:StackOverflow=
[email protected]:19.2132.1:StackOverflow=
必須形式は次のとおりです。
[email protected]:StackOverflow= (followded by everything else on the line).
したがって、本質的にStackOverflow=
電子メールが表示された後に表示される前にスライスされます。
注:すべての電子メールは一意であり、文字通りの意味ではありません。[email protected]
答え1
sed -r 's/(@[^:]+:).*(StackOverflow=)/\1\2/' input.txt
説明する
sed -r 's/foo/bar/' input.txt
:拡張正規表現でsedを使用してファイルパターンをfoo
。bar
input.txt
(@[^:]+:).*(StackOverflow=)
:@
Eメールアドレスで一致し、その後に文字以外の:
文字([^:]+
)が1つ以上表示されます。その後、:
使用された最初のキャプチャグループはすべてをキャプチャします()
。以下はグループでキャプチャした一部のキャラクター.*
です。StackOverflow=
()
/1/2
:この式を電子メールアドレスの一部(上記の最初のキャプチャグループ)に置き換え、中間部分をスキップして2番目のキャプチャグループを置き換えます。
@
これは、電子メールアドレスの形式、行数、1行あたりの行数StackOverflow=
などの入力ファイルの形式について多くの仮定を行うことに注意してください。