Oto struktura mojego pliku:
/**** Some Text here ****/
UN 10.147.243.93 51.46 KB 256 34.2%
UN 10.147.243.89 83.05 KB 256 34.6%
DN 10.147.243.88 66.43 KB 256 32.7%
Oto mój skrypt
file=$1
echo $file
if grep -q DN $File; then
echo "Get the corresponding IP address, It is the treatment that I
want to do next"
fi
Ale wyświetla tylko nazwę pliku. Masz pomysł, proszę?
2- Chciałbym wtedy wyodrębnić odpowiedni adres IP. Oto kilka szczegółów:
if grep -q DN $File; then
echo "Get the corresponding IP address Guest, It is the treatment
that I want to do next"
variable=This address
fi
Wielkie dzięki za pomoc.
Z poważaniem.
-f
podasz nazwy pliku? Ponadto - proszę podać używaną powłokę. „Skrypt” nie wystarcza, ponieważ istnieją dość ważne różnice między sh, bash, csh i tak dalej.grep --help
, oznacza to, że zastosowana składnia jest niepoprawna. Sugeruję przenieść warunek, który użyłeśif
i przetestować go w interaktywnej powłoce - zobacz, dlaczego nie działa.Odpowiedzi:
Jak wspomniano, należy poprawić
$File
literówkę.W zależności od tego, co robisz z danymi wyjściowymi,
if
test może nie być wcale potrzebny . Mówisz, że chcesz, aby adres IP był przechowywany w zmiennej:Można to znacznie uprościć pod względem wartości, ale pasuje do tego, co już masz.
Zauważ, że będzie to pasować tylko do pierwszego wystąpienia adresu IP odpowiadającego „DN” w pliku; takie zachowanie jest implikowane przez skorzystanie z
-q
opcji, dogrep
której wychodzi się natychmiast przy pierwszym dopasowaniu.Jeśli chcesz coś zrobić z każdym wystąpieniem, musisz zrobić coś innego.
źródło