Parsing problem

dakle… imam output koji treba da parsiram…

xxx | yyy | zzz …

bilo bi perfektno sa

i izbaci vrijednosti yyy za svaki line, ali … yyy moze (i ne mora :slight_smile: ) da sadrzi blank karaktere, pa bi umjesto foo bar dobio samo foo, a takodje je problem sto nakon njega imam stringova koji bi se ubacili ako bih awk-u zadao printanje narednih n stringova a nepotrebni su mi…

radio sam nesto slicno sa preg_match u php

tipa

<?php $str="bla bla bla [coder] ps aux|grep $1|grep -v grep|awk '{print $2}'|xargs kill -9[/coder] bla bla bla"; $ref = preg_match("/\[coder](.*)\[\/coder]/sim", $str, $matches) echo $matches[1]; ?>
pokusao sam sa istim principom, ali nemam bas neki output :slight_smile:

any help is appreciated

Ne razumijem šta hoćeš. Ovaj tvoj preg_match ima sintaksnu grešku. Želiš sve između prve i druge vertikalne crte? Onda

Hajd napiši konkretan primjer?

Ima li šanse da probaš “tr” komandu?

pure-ftpwho -s daje output sledeci :

user_id | user | time | DL / UL | file_name | user_ip | tx/rx |

problem mi je sa file_name, posto je haman svaki drugi sa blank karakterom, tako da mi awk ne pomaze, mada nije tu pitanje alata, koliko logike, koja mi haman otisla na godisnji :smiley:

Ma garant može i sa awkom i sa sedom… ali ja bih ipak perl koristio :wink: može i php sa preg_match ako ti je lakše

<?php $str="user_id | user | time | DL / UL | file_name | user_ip | tx/rx | "; $ref = preg_match("/^(.*?\|){4}\s?(.*?)\s?\|/", $str, $matches); echo "'".$matches[2]."'"; ?>
Po ovim jednostrukim navodnicima vidiš da su pokupljeni i razmaci oko file_name. Ako hoćeš i unutar njega razmake da ukineš ili zamijeniš nečim, moraćeš pisati drugi regex :slight_smile:

Iliti bez regex radosti:

<?php list($user_id, $user, $time, $dl_ul, $file_name, $user_ip, $tx_rx) = explode("|", $str);
Mozes dodat i trim za svaki da ukloni whitespace sa krajeva:

<?php $data = explode("|", $str); foreach($data as $key=>$value){ $data[$key] = trim($value); } list($user_id, $user, $time, $dl_ul, $file_name, $user_ip, $tx_rx) = $data;

hvala :slight_smile: explode sam skroz zaboravio… a o regexp joys necem ni da pricam … :smiley:

tnx again