Mam mały problem. Chcę podzielić linię na każdy znak potoku znaleziony przy użyciu operatora podziału. Jak w tym przykładzie.dzielenie na znak rurki w perl
echo "000001d17757274585d28f3e405e75ed|||||||||||1||||||||||||||||||||||||" | \
perl -ane '$data = $_ ; chop $data ; @d = split(/\|/ , $data) ; print $#d+1,"\n" ;'
spodziewałbym się ouput 36 jako awk
rozszczepienia z ogranicznikiem |
powrotu 36, ale zamiast ja dostać 12, jakby zatrzymał się na rozłam 1
znaku w linii.
echo "000001d17757274585d28f3e405e75ed|||||||||||1|||||||||||||||||||||||||||||||||||||||" | \
awk -F"|" '{print NF}'
Każdy pomysł. Próbowałem wielu sposobów cytowania |
, ale bez powodzenia. Wielkie dzięki z góry.
Więc wielkie dzięki. Robiłem tego rodzaju podziały tyle razy i nigdy wcześniej nie wpadłem w tę pułapkę. – saudic
+1 - Większość ludzi nie zdaje sobie z tego sprawy, dopóki nie natkną się na tę okoliczność i sprawdzą. Programowo nie ma znaczenia. Jeśli chcę przetestować, czy wartość jest zdefiniowana 'if (zdefiniowany $ my_array [$ field])' będzie działać bez względu na to, czy faktycznie istnieje wpis '$ my_array [$ field]' którego wartość jest niezdefiniowana lub czy nie ma zdefiniowanego pola '$ my_array [$ field]'. –
"Programowo", istnieją ogromne różnice. na przykład 'dla (@myarray)', 'join ($ sep, @ myarray)', itp – ikegami