Имея дело с потенциально неанизированными входами, я хотел бы видеть всю работу, "прописанную", построчно для визуального осмотра, прежде чем запускать ее (особенно когда это что-то разрушительное, например, очистка почтовых ящиков людей).
Поэтому я создаю список параметров (т. Е. Имена пользователей), передаю его в файл по одной записи на строку, например:
johndoe
jamessmith
janebrown
Затем я открываю список vimи изменяю его с помощью выражений поиска и замены, пока не получу список полных команд, которые должны быть выполнены, например:
/bin/rm -fr /home/johndoe
/bin/rm -fr /home/jamessmith
Таким образом, если ваше регулярное выражение неполное, вы увидите, в какой команде будут возникать потенциальные проблемы (т.е. /bin/rm -fr johnnyo connor). Таким образом, вы можете отменить свое регулярное выражение и попробовать его снова с более надежной версией. Известно, что искажение имен известно, потому что трудно позаботиться обо всех крайних случаях, таких как Ван Гог, О'Коннорс, Сент-Клер, Смит-Вессон.
Наличие set hlsearchполезно для этого vim, так как оно подсвечивает все совпадения, так что вы можете легко определить, не совпадает ли оно или совпадает непреднамеренным образом.
После того, как ваше регулярное выражение станет идеальным, и оно поймает все случаи, для которых вы можете проверить / подумать, я обычно преобразую его в выражение sed, чтобы его можно было полностью автоматизировать для следующего запуска.
В тех случаях, когда количество строк ввода не позволяет выполнить визуальный осмотр, я настоятельно рекомендую выводить команду на экран (или, что еще лучше, в журнал) перед ее выполнением, поэтому, если она выдает ошибку, вы точно знаете, какая команда вызвала это потерпеть неудачу. Затем вы можете вернуться к исходному регулярному выражению и настроить еще раз.
printf "foo bar\nbaz bat" | xargs echo wheeдастwhee foo bar baz bat. Может быть, добавить-Lили-nварианты?