i izbaci vrijednosti yyy za svaki line, ali … yyy moze (i ne mora ) 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
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
Ma garant može i sa awkom i sa sedom… ali ja bih ipak perl koristio 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
<?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: