Замена не-буквенных символов c на указанных строках c в нескольких файлах - PullRequest
0 голосов
/ 28 января 2020

У меня есть несколько (JSON) файлов в каталоге. Я хочу отсканировать все файлы для строки со свойством audio (первая строка в кавычках) и заменить все не-алфавитные символы c в соответствующем значении (вторая строка с кавычками) с подчеркиванием. Например, если строка:

"audio": "Sub Dir/my file` nāme.mp3"

, я хотел бы заменить ее на:

"audio": "Sub_Dir/my_file__n_me.mp3"

Что я могу сделать, чтобы заменить эти строки в нескольких файлах?

1 Ответ

1 голос
/ 28 января 2020

Если perl - ваш вариант, попробуйте:

perl -i".bak" -pe 's/("audio":\s"*)(.+?)"/
    $x = $1;
    ($y = $2) =~ s#[^A-Za-z0-9_\/\.]#_#g;
    $x . $y . "\""/e' *.json
  • Опция e для функции s/../../ позволяет подстановке быть результатом оценки perl выражение.
  • Подстановка s#[^A-Za-z0-9_\/\.]#_#g выполняется во второй строке с кавычками и заменяет символы, отличные от алфавита ascii, цифры, подчеркивания, косые черты, точки с подчеркиваниями.
  • Исходные файлы сохранено с суффиксом .bak.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...