Используя regex в для цикла

Решение проблемы отказа или проблемного диска заключается в восстановлении из резервных копий. Если это аппаратная проблема, сначала замените диск.


Попытка восстановить сломанную файловую систему - чрезвычайно трудоемкая операция, которая редко приводит к хорошим результатам..

1
24.05.2014, 02:19
2 ответа
[1176233]Основная проблема здесь в том, что расширение [1176683]${PARAMETER/PATTERN/STRING}[1176684] [1176685]PATTERN[1176686] не принимает массив, как это делает [1176687]PARAMETER[1176688], а значит [1176689]${arr[@]}[11766690] расширяется до [1176691] "% > #"[1176692]. [12121]Эффект этого можно увидеть, если добавить несколько файлов:[12122]Ваша команда приведет к:[12123]Последняя строка, надеюсь, точно покажет, что происходит. [12124]Другой предложил использовать конвейер [1176693]$f[1176694] через [1176695]sed[1176696] и делать там магию, и это было бы неплохим вариантом, так как это позволило бы сделать более сложные преобразования, однако предполагая, что вы хотите удалить только ведущие символы, достаточно использовать расширение параметра bash [1176697]${PARAMETER#WORD}[12125][1176700]: [12126]Для себя эта строка приводит к:[12127]Я вызываю паттерн [1176701]$gpat[1176702], так как это и есть паттерн [1176703]bash globbing[1176704]. Это [1176705]не[1176706] регулярное выражение.[12128] Обратите внимание, что [1176707]${PAR#WORD}[1176708] не жадный и соответствует кратчайшему возможному шаблону - [1176709]${PAR##WORD}[1176710] соответствует кратчайшему возможному шаблону. Однако, с [1176711]gpat="[%>#]"[1176712], который все равно будет соответствовать только одному символу: [12129] Если у нас есть опция оболочки [1176713]extglob[1176714] (сверьтесь с [1176715]shopt extglob[1176716], установленная с [1176717]shopt -s extglob[1176718], отмененная с [1176719]shopt -u extglob[1176720] - она, вероятно, установлена, если у вас есть разумный [1176721]bashrc[1176722]), то мы можем использовать расширенные шаблоны глобуса: [12130] примечательно, что во всех приведенных выше примерах [1176723]"% > #somefile. txt"[1176724] становится [1176725]". > #somefile.txt"[1176726] из-за пробела, следующего за % не захватываемого паттерном[12131]Конечно, [1176727]${PARAMETER/PATTERN/STRING}[1176728] (и похожий [1176729]//[1176730]) также принимают шаблоны глобуса, но я понял это (буквально) только по мере того, как печатаю эти слова, и мне не очень-то и надоело возвращаться к вышеописанному, чтобы настроить его на отражение этого. В любом случае, это работает точно так же, и, конечно, вы захотите использовать [1176731]PAR/PAT/[1176732] только для удаления символов середины строки.[1176254].
2
27.01.2020, 23:21
[1176231] это, кажется, работает на меня . .. [12120]
2
27.01.2020, 23:21

Теги

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