顧客のメールリストがありますが、.br で終わる一部のメールを削除したいと思います。私は通常、次のコマンドを実行します。
sed -i '/.br/d' customers.csv
ただし、これにより同様の顧客の電子メールも削除されます[email protected]
。
顧客の詳細の例は次のとおりです。
"Phone Number","[email protected]","NAME"
で終わる顧客の電子メールだけを削除する方法は.br
?
ベストアンサー1
使用ミラー(mlr
)は、ファイルをヘッダーなしのCSVファイルに読み込み、.br
2番目のフィールドが次に終わらないレコードのみをフィルタリングするようにフィルタリングします。
mlr --csv -N filter '$2 !=~ "\.br$"' file
出力のすべてのフィールドを参照するには、--quote-all
後に追加します-N
。ヘッダーがある場合はそれを削除し、-N
代わりにヘッダー名を使用してください$2
(例:)$email !=~ "\.br$"
。
テスト:
$ cat file
"Phone Number","[email protected]","NAME"
"Phone Number2","[email protected]","NAME2"
"Phone Number3","[email protected]","NAME3"
"Phone Number","[email protected]","NAME"
"Phone Number","[email protected]","NAME.br"
$ mlr --csv -N filter '$2 !=~ "\.br$"' file
Phone Number,[email protected],NAME
Phone Number3,[email protected],NAME3
Phone Number,[email protected],NAME
Phone Number,[email protected],NAME.br