Czy istnieje już skrypt / program / narzędzie dla następujących wymagań w zoptymalizowany sposób?
someCommand |
tee >(grep "pattern" > LinesWhichMatch) |
grep -v "pattern" > LinesWhichDoesNotMatch
text-processing
grep
tee
balki
źródło
źródło
awk
ale w którym momencie to ocenia>
? Jeśli jest oceniany za każdym razem, gdy warunek ma zastosowanie, skończyłbyś z dwoma plikami>
drukuje wszystkie dane wyjściowe do pliku, zastępując istniejące pliki. Nie jest analizowany w taki sposób, że spowoduje to, że nowe wiersze zastąpią stare dane wyjściowe z tego samego wystąpieniaawk
. Oznacza to, że jeśli istnieje wiele dopasowań, plik „dopasuj” będzie zawierał każde dopasowanie oddzieloneOFS
. Różnica pomiędzy>
i>>
istnieje w leczeniu istniejących plików.Oto
sed
przykład:Uwaga:
w
polecenie sed zastąpi istniejący plik za każdym razem, gdy skrypt jest uruchamiany, ale tylko wtedy, gdy zostanie uruchomione to konkretne polecenie zapisu; stądrm
źródło
sed -n '/PATTERN/p;//! w file-not' infile >file-yes
Możesz dołączyć pliki w awk:
lub krócej:
źródło