Bash 替换 tail -f 后的前 4 个字符
Bash replace first 4 characters after tail -f
我有一个 .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****
我有一个 .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****