テキストファイルに文字列があり、メールアドレスを検索したいが機能しません。
26,2,12,1,1,0,1,0,12,20,648130864.573339,,"iCloud - Device Locator",,,69FFBE2F-6626-4A4B-8A78-BF7D06DE59C7,7F223B27-9588-4719-81B9-074666A76E1D,com.apple.accountsd,[email protected],
試してみますがgrep -Eo "\b@'[^']*'"
動作しません
以下を出力する必要があります。[Eメール保護]
P / s:フィールドは19日ではないかもしれませんが、電子メールは常に行の末尾にあります。
答え1
csvcut
以下で使用csvkit
:
csvcut -c 19 file
awk
または、常に最後から2番目のフィールドであることを確認したい場合があります。
awk -F, '{print $(NF-1)}'
最後のフィールドにカンマが含まれている場合は機能しません。
答え2
電子メールが常にアイテム19の場合は、次のものを使用できます。
cut -d, -f 19
-d,
「、」は区切り文字で、-f 19
19番目のフィールドが必要であることを示します。
修正する:
メールはいつも最後から2番目行内の項目(後にカンマに注意してください)には、次のものを使用できますsed
。
sed -e 's/.*,\(.*\),/\1/'
答え3
sed を使用して行から最後のコンマを削除します。次に、次のように電子メールアドレスのみを残し、前のすべての内容(最後のコンマを含む)を削除します。
XXXX@Atlas:~$ echo "26,2,12,1,1,0,1,0,12,20,648130864.573339,,"iCloud - Device Locator",,,69FFBE2F-6626-4A4B-8A78-BF7D06DE59C7,7F223B27-9588-4719-81B9-074666A76E1D,com.apple.accountsd,[email protected]," | sed "s/,$//g; s/^.*,//g"
[email protected]
答え4
cut
電子メールがコンマで区切られた2番目のフィールドになるように入力を反転し、最後に反転する方法で使用されます。
< file rev | cut -d, -f2 | rev
[email protected]
フィールド区切り記号としてカンマを使用します。
perl -F, -pale '$_ = pop @F' < file
コンマを改行に変換し、改行が 1 つだけ残るまで切り捨てます。
sed -n 'y/,/\n/;/\n.*\n/D;P' < file