【发布时间】:2019-10-21 13:01:17
【问题描述】:
我有一个 .txt 格式的日志文件,我希望将前四个字符替换为 **** 或 XXXX 以匿名数据。
我正在运行以下命令:
tail -f file.txt
我知道我可以通过以下方式剪切第一个字符:
tail -f file.txt | cut -c4-
但我想插入四个通配符。
我怎样才能做到这一点?
【问题讨论】:
我有一个 .txt 格式的日志文件,我希望将前四个字符替换为 **** 或 XXXX 以匿名数据。
我正在运行以下命令:
tail -f file.txt
我知道我可以通过以下方式剪切第一个字符:
tail -f file.txt | cut -c4-
但我想插入四个通配符。
我怎样才能做到这一点?
【问题讨论】:
echo 1234567890 | sed 's/..../****/'
输出:
****567890【讨论】:
要在前四个字符匿名的情况下连续尾随文件,可以使用以下命令:
tail -f file.txt | sed 's/^..../****/'
如果您有一个已写入的文件,并且您想一次性匿名化其中的所有数据,您可以按如下方式使用 sed:
sed -i 's/^..../****/g' 58486880.txt
请注意,第二个命令适用于 GNU/Linux sed,但不适用于 BSD/MacOS sed。
【讨论】:
由于问题和标题不匹配,要替换最后四个,您必须使用$ :
tail -f tmp.txt | sed 's/.\{4\}$/****/'
测试:
while true; do cat <(seq 1 10 | tr -d '\n') <(echo) >> tmp.txt; sleep 1; done
这会产生:
1234567****
1234567****
1234567****
1234567****
1234567****
1234567****
1234567****
1234567****
1234567****
1234567****
1234567****
1234567****
1234567****
1234567****
1234567****
【讨论】: