[olug] bash help (awk/sed)
troehr at nj-onramp.com
troehr at nj-onramp.com
Fri Jun 18 15:45:01 UTC 2004
Or to avoid awk,
filename=pg0001.txt && egrep -H -o [0-9]{6}-[A-F] $filename | sed 's/:/ /'|while
read a b
do
echo $b","$a
done
Tom
Quoting Vincent.Raffensberger at dtn.com:
> I'm sure there are many ways to do it, but here's the easiest way I can
> think of (if I understand you correctly):
>
> for filename in `find /your/files`; do
> string=`egrep -o [0-9]{6}-[A-F] $filename | awk '{ print $1","}'`
> replace $string ${string}${filename} -- $filename
> done
>
> 'replace' is a utility included in MySQL. It's very handy to have around:
>
> [user at host ~]$ rpm -qf `which replace`
> mysql-3.23.56-1.80
> [user at host ~]$ man replace
> replace(1) MySQL database replace(1)
>
> NAME
> replace - A utility program that is used by msql2mysql, but that
> has
> more general applicability as well. replace changes strings in
> place in
> files or on the standard input. Uses a finite state machine to
> match
> longer strings first. Can be used to swap strings.
>
> USAGE
> replace [-?svIV] from to from to ... -- [files]
>
> or
>
> replace [-?svIV] from to from to ... < fromfile > tofile
>
> SYNOPSIS
> replace [-?|-I] [-s] [-v]
>
> DESCRIPTION
> replace
>
> -?|-I info
>
> -s silent
>
> -v verbose
>
> EXTRA INFO
> Special characters in from string:
>
> \^ Match start of line.
>
> \$ Match end of line.
>
> \b Match space-character, start of line or end of line. For a
> end
> \b the next replace starts locking at the end
> space-character. A
> \b alone in a string matches only a space-character.
>
> EXAMPLE
> this command swaps a and b in the given files:
>
> shell> replace a b b a -- file1 file2 ...
>
> SEE ALSO
> isamchk (1), isamlog (1), mysqlaccess (1), mysqladmin (1),
> mysqlbug
> (1), mysqld (1), mysqldump (1), mysqlshow (1), msql2mysql (1),
> perror
> (1), replace (1), safe_mysqld (1), which1 (1), zap (1),
>
> AUTHOR
> Ver 1.0, distribution 3.23.29a Michael (Monty) Widenius
> (monty at tcx.se),
> TCX Datakonsult AB (http://www.tcx.se). This software comes with
> no
> warranty. Manual page by L. (Kill-9) Pedersen (kill-9 at kill-9.dk),
> Mer-
> curmedia Data Model Architect / system developer
> (http://www.mercurme-
> dia.com)
>
> MySQL 3.23 19 December 2000 replace(1)
>
>
>
> Eric Pierce <eric_olug at yahoo.com>
> Sent by: olug-bounces at olug.org
> 06/18/2004 12:37 AM
> Please respond to
> Omaha Linux User Group <olug at olug.org>
>
>
> To
> olug at olug.org
> cc
>
> Subject
> [olug] bash help (awk/sed)
>
>
>
>
>
>
> Ok, I'm stumped.
>
> I'm trying to pull from a file (several files actually) all six digit
> combinations followed by a dash and a letter A-F (ex. 123456-D). Then I
> want
> to append a comma AND the filename that it is pulling from.
>
> Example.
> 123456-D,file01.txt
> 654321-D,file01.txt
> ...
>
> Here's what I have so far:
> filename=pg0001.txt && egrep -o [0-9]{6}-[A-F] $filename | awk '{ print $1
> ","}'
>
> The output so far is 90% there. It looks like this:
> 300150-D,
> 300141-C,
> 300258-D,
> 300132-A,
> ...
>
> But I can't figure out how to append the $filename after the comma in each
> line. I can't get Awk to resolve the $filename variable. I've tried a
> billion
> different syntax combinations sticking $filename on the end of the Awk
> part,
> but to no avail.
>
> I also have a sed version, but the problem is exactly the same.
> filename=pg0001.txt && egrep -o [0-9]{6}-[A-F] $filename | sed -n
> 's/\(.*\)/\1,/p
>
> Any ideas anyone?
> Thanks,
> Eric Pierce
>
>
>
>
> __________________________________
> Do you Yahoo!?
> Yahoo! Mail - You care about security. So do we.
> http://promotions.yahoo.com/new_mail
> _______________________________________________
> OLUG mailing list
> OLUG at olug.org
> http://lists.olug.org/mailman/listinfo/olug
>
>
> _______________________________________________
> OLUG mailing list
> OLUG at olug.org
> http://lists.olug.org/mailman/listinfo/olug
>
More information about the OLUG
mailing list