Kiedy mam do czynienia z potencjalnie niezaangażowanymi danymi wejściowymi, lubię widzieć, jak całe zadanie „pisze się” wiersz po wierszu do kontroli wizualnej, zanim go uruchomię (szczególnie, gdy jest to coś destrukcyjnego, jak czyszczenie skrzynek pocztowych ludzi).
Więc to, co robię, to wygenerowanie listy parametrów (tj. Nazw użytkowników), przesłanie jej do pliku w sposób jeden rekord na linię, jak poniżej:
johndoe
jamessmith
janebrown
Następnie otwieram listę vim
i zmieniam ją za pomocą wyszukiwania i zamieniam wyrażenia, aż otrzymam listę pełnych poleceń, które należy wykonać, w następujący sposób:
/bin/rm -fr /home/johndoe
/bin/rm -fr /home/jamessmith
W ten sposób, jeśli wyrażenie regularne jest niekompletne, zobaczysz, w jakim poleceniu wystąpią potencjalne problemy (tj. /bin/rm -fr johnnyo connor
). W ten sposób możesz cofnąć wyrażenie regularne i spróbować ponownie, używając bardziej niezawodnej wersji. Zmiana nazwy jest znana z tego powodu, ponieważ ciężko jest zająć się wszystkimi przypadkowymi przypadkami, takimi jak Van Gogh, O'Connors, St. Clair, Smith-Wesson.
Mając set hlsearch
jest przydatna w ten sposób vim
, jak to podkreślają wszystkie mecze, więc można łatwo dostrzec, jeśli nie pasuje, lub mecze w niezamierzony sposób.
Gdy wyrażenie regularne jest idealne i obejmuje wszystkie przypadki, w których można przetestować / wymyślić, zwykle przekształcam je w wyrażenie sed, aby można je było w pełni zautomatyzować do kolejnego uruchomienia.
W przypadkach, w których liczba wierszy danych wejściowych uniemożliwia sprawdzenie wizualne, zdecydowanie polecam powtórzenie polecenia na ekranie (lub jeszcze lepiej w dzienniku) przed jego wykonaniem, więc jeśli wystąpi błąd, dokładnie wiesz, które polecenie spowodowało zawieść. Następnie możesz wrócić do pierwotnego wyrażenia regularnego i dostosować go jeszcze raz.
printf "foo bar\nbaz bat" | xargs echo whee
ustąpiwhee foo bar baz bat
. Może dodać opcje-L
lub-n
?