選択した文字から逆方向にテキストを抽出する

選択した文字から逆方向にテキストを抽出する

次の行を含むファイルがあります。

handleNewConnection:: User [email protected] has 2 active nodes
handleNewConnection:: User [email protected] has 2 active nodes
handleNewConnection:: User [email protected] has 2 active nodes
handleNewConnection:: User [email protected] has 2 active nodes

システムは「@」(選択した文字)を見つけて、「@」記号から逆方向に文字列を抽出する必要があります。ご存知のように、数字やアルファベット文字を含めることができ、長さは一定ではありません。

そして grep -o '[^"]@' /tmp/has2.txt

私は得る:

m@
2@
1@
g@

1)このようにして2番目のテキストファイルを取得できるかどうかを知っている人はいますか?

langfordm
bas102
bah001
mattleg

2)1)で生成された名前を他のプロセスの入力として単独で使用できるかどうかを知っている人はいますか?

ベストアンサー1

grepPCRE() と一緒に使用-P:

$ grep -Po '.*\s\K[^@]+(?=@)' file.txt
langfordm
bas102
bah001
mattleg

またはGNUを使用してくださいsed

$ sed -r 's/.*\s([^@]+)@.*/\1/' file.txt 
langfordm
bas102
bah001
mattleg

明らかに、次のプロセスが入力を受け取る方法に応じて、他のプロセスで結果を使用できます。これにより、配列を作成したり、結果を次のプロセスのSTDINに直接渡すことができます。

おすすめ記事