Category:TXR: Difference between revisions

no edit summary
(Created page with "{{stub}}{{language}}")
 
No edit summary
Line 1:
{{stub}}{{language}}
 
TXR[http://www.nongnu.org/txr/] is a new text extraction language implemented in C, running on Linux (and possibly other POSIX platforms).
 
Here is a very basic hello-world-type TXR query that re-implements the "free" utility:
 
<lang txr>#!/usr/bin/txr -f
@(next "/proc/meminfo")
@(skip)
MemTotal:@/ +/@TOTAL kB
MemFree:@/ +/@FREE kB
Buffers:@/ +/@BUFS kB
Cached:@/ +/@CACHED kB
@(skip)
SwapTotal:@/ +/@SWTOT kB
SwapFree:@/ +/@SWFRE kB
@(next `!echo $(( @TOTAL - @FREE ))`)
@USED
@(next `!echo $(( @USED - @BUFS - @CACHED ))`)
@RUSED
@(next `!echo $(( @FREE + @BUFS + @CACHED ))`)
@RFREE
@(next `!echo $(( @SWTOT - @SWFRE ))`)
@SWUSE
@(output)
TOTAL USED FREE BUFFERS CACHED
Mem: @{TOTAL -12} @{USED -12} @{FREE -12} @{BUFS -12} @{CACHED -12}
+/- buffers/cache: @{RUSED -12} @{RFREE -12}
Swap: @{SWTOT -12} @{SWUSE -12} @{SWFRE -12}
@(end)</lang>
 
Sample run:
 
<pre>$ ./meminfo.txr
TOTAL USED FREE BUFFERS CACHED
Mem: 769280 647752 121528 160108 286844
+/- buffers/cache: 200800 568480
Swap: 1048568 18200 1030368
</pre>
 
Arithmetic is not implemented in TXR as of version 035. The above example simply continues the pattern matching across invocations of echo to borrow the shell to do math. The command
 
<pre>@(next `!echo $(( @TOTAL - @FREE ))`)
@USED
</pre>
 
means, "Next, please switch to scanning the output of this echo command with some variables substituted in.
Then capture entire first line of this command into the USED variable."
Anonymous user