/ / delenie na charaktere rúry v perl - perl, split, awk

rozdelenie na znak potrubia v perl - perl, rozdelenie, awk

Mám malý problém. Chcem rozdeliť riadok na každý znak potrubia nájdený pomocou operátora rozdelenia. Ako v tomto príklade.

echo "000001d17757274585d28f3e405e75ed|||||||||||1||||||||||||||||||||||||" | 
perl -ane "$data = $_ ; chop $data ; @d = split(/|/ , $data) ; print $#d+1,"n" ;"

Očakával by som výstup 36 ako awk štiepenie oddeľovačom | návrat 36, ale namiesto toho dostanem 12, akoby sa rozdelenie zastavilo na 1 znak v riadku.

echo "000001d17757274585d28f3e405e75ed|||||||||||1|||||||||||||||||||||||||||||||||||||||" | 
awk -F"|" "{print NF}"

Nejaký nápad. Vyskúšal som mnoho spôsobov citovania |, ale bez úspechu. Ďakujem vopred.

odpovede:

16 pre odpoveď č. 1

Podľa split:

Štandardne sa zachovajú prázdne úvodné polia a prázdne koncové sú odstránené.

Musíte zadať záporný limit rozdelenia, aby ste dosiahli koncové hodnoty:

split(/|/, $data, -1)