我有一个包含以下行的文件。我的目标是掩盖字段的值,如姓名,DOB,电子邮件地址,邮寄地址,住址,电话号码,其他电话号码**。棘手的部分是,在下一个字段开始之前可能没有可预测的文本长度。例如,城市结束并且州开始......所以也许用*来知道终点?我正在使用.sed文件并针对此日志文件运行它。 “|”也是文件的一部分。它基本上是一个输出到日志文件的屏幕
android{
dexOpts{
javaMaxHeapSize "2g"
}
}
答案 0 :(得分:1)
所以也许用*来知道终点?
我不确定这是不是一个好方法。似乎并非所有字段都跟有*
,并且这不包括字段值中包含*
的情况。
假设您只能用*
个字符替换整个字段,我会将其分解为多个sed
命令(每个字段对应一个要替换的字段)。
还需要一些手工操作;在这里,我们用30个.
字符替换几乎任何类型*
的30个字符,因为这是“name”值字段有多少个字符。
name_len=30
sed -r "s/(Name: ).{,$name_len}/\1$(printf '*%.0s' {1..$name_len})/g"
这对你的第9行的影响是
| Name: ****************************** DOB: 11111950 *Correspondence Lang: _ |
答案 1 :(得分:1)
它使用分隔符
的个案选项for Balise in '| Name: <-> DOB:' ' DOB: <-> |' ' Email Address: <-> |'
do
sed ":cycle
s/\(${Balise%<->*}[*]*\)[^*]\(.*${Balise#*<->}\)/\1*\2/
t cycle" YourFile > TempFile
mv TempFile YourFile
done
for in
循环条目中通过由第一个分隔符后跟<->
和结束分隔符组成的字符串定义。
<->
中的${Balise...}
*
-i
选项代替此处用于任何版本的临时文件