Mam problem z używaniem grep. Mam plik http://pastebin.com/HxAcciCa, który chcę sprawdzić dla niektórych wzorów. A kiedy "Próbuję wyszukać go grep zwraca wszystkie wiersze pod warunkiem, że wzór już istnieje w danym pliku.Dlaczego grep pasuje do wszystkich wierszy niezależnie od wzorca
Aby wyjaśnić bardziej jest to kod, który używam
grep -F "ENVIRO" "$file_pos" >> blah
nr . znaczenia, co jeszcze mogę spróbować nawet jeśli zapewniają całą linię jako bash wzór zawsze zwraca wszystkie wiersze
są odmiany, co usiłuję:
grep -F "E20" "$file_pos" >> blah
grep E20 "$file_pos" >> blah
grep C:\E20-II\ENVIRO\SSNHapACS480.dll "$file_pos" >> blah
grep -F C:\E20-II\ENVIRO\SSNHapACS480.dll "$file_pos" >> blah
także dla jakichś dziwnych powodów podczas dodawania - x opcja grep, to nie zwraca żadnej linii, mimo że istnieje dokładny wzorzec.
Przeszukałem sieć i dokumentację bash dla przyczyny, ale nie mogłem znaleźć niczego.
Mój test końcowy był następujący
grep -F -C 1 "E20" "$store_pos" >> blah #store_pos has the same value as $file_pos
Myślałem, że może to było drukować wiersze po wyniku, ale to nie był przypadek. Użyłem pliku blah, aby zobaczyć wyniki. Używam również Linuksowej mięty Rebecca. Ostatecznie, mimo że nazewnictwo jest dość znane, to pytanie nie jest podobne do Why does grep match all lines for the pattern "\'"
Na koniec chciałbym powiedzieć, że jestem nowy w bashu. Podejrzewam, że błąd może wynikać z głównego pliku http://pastebin.com/HxAcciCa, a nie z kodu?
Dołączasz do "bla". Gdzie jest ta część, w której ją skracasz, żeby była pusta? –
Rzeczy takie jak 'grep -F C: \ E20-II \ ENVIRO \ SSNHapACS480.dll" $ file_pos "' nie może działać, odwrotne ukośniki muszą być zmienione lub cytowane, jeśli chcesz je przekazać do grep. A więc: 'grep -F 'C: \ E20-II \ ENVIRO \ SSNHapACS480.dll'" $ file_pos "'. I można to połączyć z '-x'. Ale problem ten powinien mieć odwrotny skutek: nie powinieneś mieć żadnych dopasowań, a nie każdej linii jako meczu. – hvd
problem z zakończeniami linii w pliku? sprawdź hexdump lub 'cat -vET filename'. –