sed
プログラムがうまくこれを行います。
sed '2,$s/,[^,]*,/,*****,/'
を2,$
は(ファイルの最後までライン2上で動作しますヘッダー行だけを残す)、代替コマンドs/,[^,]*,/,*****,/
は、最初のカンマと第2のカンマの間のものをマスク*****
に置き換えます。私は、具体的置換文字列にアスタリスクの固定番号を使用しました
注意。パスワードや匿名化データを隠していても(この場合のように)、の情報は、置き換えられる名前のサイズなど、の情報に漏れたくありません。
あなたがのようなものを使用することができ、あなた本当には、元のデータのように文字の同じ番号を使用したい、とあなたはまた、複数のフィールドを置き換えるの可能性に対応するためにしたい場合:
awk -F, 'BEGIN{OFS=FS}NR==1{print;next}{gsub(/./,"*",$2);gsub(/./,"*",$4);print}'
これもそのまま最初の行を残すであろうが、(前述した情報の漏洩を持つにもかかわらず)の列2および4を匿名化されます。
echo 'First_name,second_name,phone_number,other
ram,prakash,96174535,abc
hari,pallavi,98888234,def
anurag,aakash,82783784,g
bob,santamaria,124,xyzzy' | awk -F, 'BEGIN{OFS=FS}NR==1{print;next}{gsub(/./,"*",$2);gsub(/./,"*",$4);print}'
First_name,second_name,phone_number,other
ram,*******,96174535,***
hari,*******,98888234,***
anurag,******,82783784,*
bob,**********,124,*****
複数の列をで完全に匿名化する場合は、gsub
ではなく$2="*****"
を使用する必要があります(両方の列について)。
Vinay、予想される出力では、 "second_name"の長さに等しい数のアスタリスクを使用しました。これはあなたの要求された動作ですか、あるいはいくつかの回答で仮定されているように、アスタリスクの固定数を受け入れることができますか?私はそれを追加しなければならない、データを難読化したいならば、アスタリスクの固定数がより良い選択かもしれない。 – gboffi
*は、そのフィールドの長さに基づいていなければなりません。 – vinay24
*すべての*現在の回答を無効にする基本的な方法であなたの質問を変更することは悪い形とみなされます。新しい質問として新しい質問をする必要があります。 – paxdiablo