Какой инструмент командной строки GNU/Linux я использовал бы для выполнения поиска и замены на файле?

Я нашел связанную с этим проблему в проблеме с вопросом о проблеме AOSP 185370 WifiManager # getScanResults () возвращает список пустых массивов, если GPS отключен.

Проблема упоминается в # 1 . Мобильный телефон должен открыть службу определения местоположения, чтобы получить список мобильных телефонов.

И из # 18 участник проекта Android утверждает, что команда разработчиков исправлена проблема, о которой вы сообщили, и она будет доступна в будущей сборке.

APP находится в targetSdkVersion 23, просто следуйте приведенному выше решению, чтобы проверить разрешение во время выполнения. Принятие решения о включении проблемы с службами местоположений будет исправлено в будущей версии Android.

24
задан Ben Lever 1 October 2008 в 23:17
поделиться

4 ответа

sed 's/a.*b/xyz/g;' old_file > new_file

GNU sed (который Вы, вероятно, имеете) еще более универсален:

sed -r --in-place 's/a(.*)b/x\1y/g;' your_file

Вот краткое объяснение тех опций:

-i [СУФФИКС], - оперативные файлы редактирования [=SUFFIX] на месте (делает резервное копирование, если расширение предоставило)

-r, - regexp-расширенный расширенные регулярные выражения использования в сценарии.

версия FreeBSD также поддерживает эти опции. NetBSD и поддержка версий OpenBSD [только 112].

, Если Вы хотите узнать больше о sed, , Cori предложил это учебное руководство .

51
ответ дан Community 16 October 2019 в 07:37
поделиться

Perl был изобретен для этого:

perl -pi -e 's/foo/bar/g;' *.txt

Любой нормальный s///шаблон в тех одинарных кавычках. Можно сохранить резервное копирование с чем-то вроде этого:

perl -pi.bak -e 's/foo/bar/g;' *.txt

Или конвейер:

cat file.txt | perl -ne 's/foo/bar/g;' | less

, Но это - действительно задание большего количества sed.

27
ответ дан Michael Cramer 16 October 2019 в 07:37
поделиться

sed, потоковый редактор, и да, это использует regex.

5
ответ дан cori 16 October 2019 в 07:37
поделиться

Рассмотрите Ruby как альтернативу Perl. Это украло большую часть командной строки остроты Perl args (-i, -p, -l, -e, -n) и автонаборы $_ поскольку Вам нравится Perl, делает и имеет много regex совершенства. Дополнительно синтаксис Ruby может быть более удобным и легче читать или записать, чем Perl или sed's. (Или не, в зависимости от Ваших вкусов.)

ruby -pi.bak -e '$_.gsub!(/foo|bar/){|x| x.upcase}' *.txt

по сравнению с.

perl -pi.bak -e 's/(foo|bar)/\U\1/g' *.txt

Во многих случаях при контакте с остротами, производительность не является действительно проблемой, чтобы заботиться, используете ли Вы легкий sed или тяжелый Perl или heaveier-вес Ruby. Используйте то, что является самым легким записать.

6
ответ дан Brian Carper 28 November 2019 в 22:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: