Bash заменяет первые 4 символа после tail -f - PullRequest
0 голосов
/ 21 октября 2019

У меня есть файл журнала в формате .txt, где я хочу, чтобы первые четыре символа были заменены на **** или XXXX для анонимизации данных.

Я выполняю следующую команду:

tail -f file.txt

Я знаю, что могу вырезать первые символы следующим образом:

tail -f file.txt | cut -c4-

Но тогда я хотел бы вставить четыре символа подстановки.

Как этого добиться

Ответы [ 3 ]

1 голос
/ 21 октября 2019
echo 1234567890 | sed 's/..../****/'

Выход:

****567890
0 голосов
/ 21 октября 2019

Поскольку вопрос и заголовок не совпадают, для замены последних четырех необходимо использовать $ следующим образом:

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****
0 голосов
/ 21 октября 2019

Для непрерывной привязки файла к анонимным первым четырем символам вы можете использовать следующую команду:

tail -f file.txt | sed 's/^..../****/'

Если у вас есть файл, для которого выполняется запись, и вы хотите анонимизировать все данные всразу, вы можете использовать sed следующим образом:

sed -i 's/^..../****/g' 58486880.txt

Обратите внимание, что эта вторая команда работает с GNU / Linux sed, но не с BSD / MacOS sed.

...