Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Demonstrates how awk can operate stateful across multiple lines
- tstfile="$(mktemp)"
- exec 3>"$tstfile"
- echo Garbage >&3
- echo HEADER1 >&3
- echo Garbage >&3
- echo Garbage >&3
- echo Garbage >&3
- echo TIMESTAMP1 >&3
- echo Garbage >&3
- echo Garbage >&3
- echo Garbage >&3
- echo MATCH1 >&3
- echo Garbage >&3
- echo HEADER1 >&3
- echo Garbage >&3
- echo Garbage >&3
- echo Garbage >&3
- echo TIMESTAMP1 >&3
- echo Garbage >&3
- echo Garbage >&3
- echo Garbage >&3
- echo MATCH2 >&3
- exec 3>&-
- awk '
- function clear_state() { header=""; timestamp="" }
- BEGIN{ clear_state() }
- /^HEADER/{ clear_state(); header=$0 }
- header && /^TIMESTAMP/{ timestamp=$0 }
- header && timestamp && /^MATCH1/ {
- printf("%s @ %s: %s\n", header, timestamp, $0);
- clear_state()
- }
- header && timestamp && /^MATCH2/ {
- print($0);
- clear_state();
- }
- ' <"$tstfile"
- unlink "$tstfile"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement