在UNIX中用XXX掩码字段替换字段中的一些敏感字符

问题描述 投票:0回答:1

我有一个表已导出到UNIX中的文件,其中包含CSV格式的数据,例如:

档案1:

ACCT_NUM,EXPIRY_DT,FIRST_NAME,LAST_NAME
123456,09-09-2019,Prisi,Kumar

现在我需要屏蔽ACCT_NUM和FIRST_NAME并替换文件1中的屏蔽值,输出应该看起来像这样

文件2:

ACCT_NUM,EXPIRY_DT,FIRST_NAME,LAST_NAME
123XXX,09-09-2019,PRXXX,Kumar

我有数字和字符串字段的单独屏蔽功能,我需要知道如何替换原始文件中的屏蔽列。

csv unix
1个回答
0
投票

我不确定你想用FNR做什么,以及分配给a数组的重点应该是什么。我就是这样做的:

$ cat x.awk
#!/bin/sh

awk -F, -vOFS=, '  # Set input and output field separators.
NR == 1 {          # First record?
   print           # Just output.
   next            # Then continue with next line.
}

NR > 1 {                      # Second and subsequent record?
   if (length($1) < 4) {      # Short account number?
       $1 = "XXX"             # Replace the whole number.
   } else {
       sub(/...$/, "XXX", $1) # Change last three characters.
   }
   if (length($3) < 4) {      # Short first name number?
       $3 = "XXX"             # Replace the whole name.
   } else {
       sub(/...$/, "XXX", $3) # Change last three characters.
   }
   print                      # Output the changed line.
}'

开演时间!

$ cat input
ACCT_NUM,EXPIRY_DT,FIRST_NAME,LAST_NAME
123456,09-09-2019,Prisi,Kumar
123,29-12-2017,Jim,Kirk
$ ./x.awk < input
ACCT_NUM,EXPIRY_DT,FIRST_NAME,LAST_NAME
123XXX,09-09-2019,PrXXX,Kumar
XXX,29-12-2017,XXX,Kirk
© www.soinside.com 2019 - 2024. All rights reserved.