2つのカンマの間にテキストを入力する方法

2つのカンマの間にテキストを入力する方法

テキストファイルに文字列があり、メールアドレスを検索したいが機能しません。

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 1919番目のフィールドが必要であることを示します。

修正する:

メールはいつも最後から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

関連情報