Я работаю над анонимизацией нескольких полей в текстовом файле, разделенном точкой с запятой.
Сейчас у меня есть следующая команда:
perl -aF'(;)' -ne "s/^.{$length}/$x_string/ for @F[2*$index]; print @F" file
Где $index
соответствуетиндекс строки, которую я хочу заменить относительно точки с запятой, $length
- это размер строки для замены, а $x_string
- простая строка из X.
Для $index
, равного 1
, $size
равно 3
и $x_string
равно XXX
, если file
имеет следующее содержимое:
azerty;012;test;20181201;;wxc;
ytreza;345;demo;20160214;;nbv;
Тогда команда perl
возвращает это:
azerty;XXX;test;20181201;;wxc;
ytreza;XXX;demo;20160214;;nbv;
Моя проблема в том, что я хочу пропустить, а не анонимизировать потенциальную строку заголовка.Я знаю, как это сделать без оператора for
- например, с помощью unless $. == 1
- но я не знаю, как управлять им в сочетании с параметром -F
.
Обратите внимание, что я всегда будуу меня есть массив размера 1 из-за структуры моего файла конфигурации, объединяющей переменные index
и length
.
Я новичок с perl
, поэтому я прошу вас помочь с этой проблемой!