An XARGS question

Bill Rugolsky Jr. brugolsky at telemetry-investments.com
Tue Jul 18 21:07:17 UTC 2006


On Tue, Jul 18, 2006 at 02:31:52PM -0500, Michael Yep wrote:
> Hello
> 
> Is there a way to have xargs or perhaps another tool take a list from
> stdin and put it somewhere besides the last argument?
> 
> Say if i want to get all the offending IPs (bad logins) for a given day
> then i want to take that list and see if its in a file called blacklist
> 
> lastb -ai |fgrep "Jul 18" |awk '{print $10 }'|sort|uniq | xargs grep ???
> blacklist
> 
> where ??? would be where the stdin goes

Others have directed you toward "xargs -i", which is correct,
but in this particular example, you can do something simpler,

	lastb -ai |fgrep "Jul 18" |awk '{print $10 }'|sort|uniq \
	|fgrep -x -f - blacklist
 
where "-f -" reads the list of patterns from standard input, and
"-x" matches the whole line, to eliminate false hits.  Under other
circumstances, "-w" might be appropriate.

This has the virtue of invoking fgrep once and processing all addresses
in parallel.

Regards,

	Bill Rugolsky




More information about the fedora-list mailing list