AWK + strace

AWK + strace
« kdy: 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


Kit

  • *****
  • 568
    • Zobrazit profil
    • E-mail
Re:AWK + strace
« Odpověď #1 kdy: 24. 11. 2020, 15:08:43 »
K čemu je tam ten grep? Zbavil bych se ho.

Kit

  • *****
  • 568
    • Zobrazit profil
    • E-mail
Re:AWK + strace
« Odpověď #2 kdy: 24. 11. 2020, 15:16:03 »
Nemá být náhodou ten backslash zdvojený?

Jose D

  • *****
  • 626
    • Zobrazit profil
Re:AWK + strace
« Odpověď #3 kdy: 24. 11. 2020, 15:19:18 »
...Pomocou strace sa hooknem na proces ssh a citam co tam zadavam...
hodně pěkné :)

AoK

  • ****
  • 251
    • Zobrazit profil
Re:AWK + strace
« Odpověď #4 kdy: 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" }'


Kit

  • *****
  • 568
    • Zobrazit profil
    • E-mail
Re:AWK + strace
« Odpověď #5 kdy: 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.