Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: snuff1987 24. 11. 2020, 14:12:46

Název: AWK + strace
Přispěvatel: snuff1987 24. 11. 2020, 14:12:46
Caute, robim nasledujucu ulohu..Pomocou strace sa hooknem na proces ssh a citam co tam zadavam + vidim vystup..
Tento vystup si chcem odfiltrovat tak, aby som videl presne to co vidi clovek za danou ssh session..

Zatial som skoncil na niecom takomto:

strace -p 7947 -e write -v -s 500 2>&1 | grep --line-buffered "write(5"  | grep --line-buffered -oP "\".*\"" | awk ' {gsub("\"","");  print $0} '


Problem je ten, ze vystup mam nasledovny:

l
s
 
-
l
\r\n
total 0\r\n


No a ja potrebujem vsetky znaky, ktore su pred znakmi "\r\n" nechat v jednom riadku. Az ked awk uvidi "\r\n" prejde na dalsi riadok.. Vie niekto poradit? Diky
Název: Re:AWK + strace
Přispěvatel: Kit 24. 11. 2020, 15:08:43
K čemu je tam ten grep? Zbavil bych se ho.
Název: Re:AWK + strace
Přispěvatel: Kit 24. 11. 2020, 15:16:03
Nemá být náhodou ten backslash zdvojený?
Název: Re:AWK + strace
Přispěvatel: Jose D 24. 11. 2020, 15:19:18
...Pomocou strace sa hooknem na proces ssh a citam co tam zadavam...
hodně pěkné :)
Název: Re:AWK + strace
Přispěvatel: Exceptions 24. 11. 2020, 15:27:00
tak obecně se to spojení řádků podle \r\n dá v awk řešit nějak takhle:

Kód: [Vybrat]
| awk 'BEGIN { ORS="" } { print $0 } $0 ~ /\\r\\n$/ { print "\n" }'
Název: Re:AWK + strace
Přispěvatel: Kit 24. 11. 2020, 15:32:35
tak obecně se to spojení řádků podle \r\n dá v awk řešit nějak takhle:

Kód: [Vybrat]
| awk 'BEGIN { ORS="" } { print $0 } $0 ~ /\\r\\n$/ { print "\n" }'

Obecně by stačilo ty konce řádek tím skriptem nevkládat. Pak je ani nebude nutné vyhazovat.