w jakikolwiek sposób możemy zmienić ogranicznik, który używa grep?
Myślę, że domyślnie grep używa \n
jako separatora.
linux
shell-script
grep
studiohack
źródło
źródło
$/
) i awk (RS
). Lub możesz zrobić coś takiegoecho "$var" | sed 's/<delimiter>/\n/' | grep <pattern>
. Wiele odpowiedzi, w zależności od tego, jaki jest twój rzeczywisty problem.Odpowiedzi:
Jeśli zależy Ci tylko na wynikach,
tr
może Ci pomóc:źródło
echo $my_var | tr @ '\n' | grep blahblah
$my var
aby zachować białe spacje i znaki nowej linii, tjecho "$my_var" | ...
.agrep
z University of Arizona pozwala ustawić ogranicznik. Nie zastępuje grep; wykorzystuje inny algorytm (przybliżony grep, może dopasowywać się do błędów) i ma inną składnię wzorca. Ale to przydatne narzędzie.Niestety, myślę, że z powodu problemów z licencjonowaniem nazwano wiele podobnych projektów
agrep
i nie wszystkie są kompatybilne. Myślę jednak, że wszystkie wersje pozwalają ustawić ogranicznik.źródło
źródło
d="${1}"
zamiast po prostud="$1"
? (2) Musisz rozwinąć swoje ostrzeżenie: jeśli jest używane z wieloma plikami, masz również problem, jeśli którakolwiek z nazw plików zawiera `@ '. (3) (Nit pick) Prawdziwa zamiana / emulator „grep” również działałby przy zerowych argumentach pliku.Zastąp znak zerowy („@”) znakiem nowej linii (\ n) przed grep:
źródło
Jak to jest Jakieś zastosowanie?
Ustaw „@” zgodnie z potrzebami.
źródło