Skrypt Powłoka Znajdź ciąg w pliku

0

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.

badacz
źródło
dlaczego nie -fpodasz 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.
mnmnc
if grep -q DN -f $ Plik; następnie ---> wyświetla „grep --help”
badacz
2
Masz literówkę: „$ Plik” kontra „$ plik”
bertieb
jeśli wyświetla się grep --help, oznacza to, że zastosowana składnia jest niepoprawna. Sugeruję przenieść warunek, który użyłeś ifi przetestować go w interaktywnej powłoce - zobacz, dlaczego nie działa.
mnmnc
muszę zmienić „$ File” na „$ file”, jeśli plik grep -q DN $; potem -> wyświetla komunikat, dziękuję bardzo. Czy możliwe jest wyodrębnienie odpowiedniego adresu IP.
badacz

Odpowiedzi:

2

Jak wspomniano, należy poprawić $Fileliterówkę.

W zależności od tego, co robisz z danymi wyjściowymi, iftest może nie być wcale potrzebny . Mówisz, że chcesz, aby adres IP był przechowywany w zmiennej:

file=$1
echo $file
ip=$(grep -e DN $1 | awk '{ print $2; }')
echo $ip

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 -qopcji, do grepktórej wychodzi się natychmiast przy pierwszym dopasowaniu.

Jeśli chcesz coś zrobić z każdym wystąpieniem, musisz zrobić coś innego.

bertieb
źródło