plik to:
BASH.NIR SH.ABI Chcę skrypt awk do pokazania:
User is NIR, SHELL is BASH User is ABI, SHELL is SH Nie wiem, jak podzielić parametr według znaków. Pomysł jest następujący:
cat file.txt | awk "{print "User is " afterDot($1) ", SHELL is " beforeDot($1)}" Odpowiedź
 Funkcji ciągów można używać w awk. 
$ (echo BASH.NIR; echo SH.ABI FOOBAR) | awk "{p=index($1,".");print "User is", substr($1,p+1) ", SHELL IS", substr($1,0,p-1)}" User is NIR, SHELL IS BASH User is ABI, SHELL IS SH  Funkcja index zwraca pozycję szukanego znaku (w tym przypadku kropki). I strstr zwróci podciąg. Używamy p+1 i p-1, aby nie uwzględniać kropki. 
 Więcej informacji można znaleźć w sekcji „Funkcje ciągów” na stronie podręcznika awk. 
Odpowiedź
 Możesz po prostu użyć . jako separatora pól: 
awk -F. "{ print "User is " $2 ", SHELL is " $1 }" file.txt Komentarze
- plik tekstowy może mieć rozszerzenie ma też białe spacje
- @nir Proszę wkleić próbkę swoich dokładnych danych wejściowych do pytania, mogę ' zgadnąć, jak to wygląda na przykład, chyba że odpowiednio je przedstawisz.
- @nir – zawsze najlepiej jest zawierać prawdziwe przykładowe dane. Zmodyfikowane dane zwykle marnują po prostu czas odpowiedzi ', ponieważ generalnie prowadzi to do niewłaściwych rozwiązań.
- masz rację, pojawi się następnym razem.