awk / bash globbing question


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk / bash globbing question
# 1  
Old 07-14-2005
awk / bash globbing question

I would like to process a list of files matching: GPS*\.xyz with an awk script. I would then like to output the files to GPS*\.xyz.out (e.g. the same file name appended with .out). Something like:
Code:
awk '{if(NR==1) {offset=-$1}; $1=$1+offset; print }' GPS*.xyz

this does exactly what I want EXCEPT redirecting the output appropriately. I tried
Code:
awk '{ ... print > FILENAME.out}' GPS*.xyz
and
awk '{...}' GPS*.xyz > GPS*.xyz.out

but as expected this did not work.

I realize that putting this in:
Code:
for f in ls GPS*.xyz

loop would work as I need but I would like an elegant solution that I can learn from.

Suggestions?

Cheers,
Brandon Franzke
# 2  
Old 07-14-2005
Quote:
Originally Posted by franzke
I would like to process a list of files matching: GPS*\.xyz with an awk script. I would then like to output the files to GPS*\.xyz.out (e.g. the same file name appended with .out). Something like:
Code:
awk '{if(NR==1) {offset=-$1}; $1=$1+offset; print }' GPS*.xyz

Since you are reading several files, NR probably should be FNR:
Code:
awk 'FNR==1 {offset=-$1;next} {$1+=offset; print >FILENAME".out"}' PS*.xyz

# 3  
Old 07-14-2005
Code:
awk 'FNR==1 {offset=-$1;if(NR>1) close(of);of=FILENAME".out"} {$1+=offset; print >of}' GPS*.xyz

# 4  
Old 07-15-2005
Quote:
Originally Posted by futurelet
Since you are reading several files, NR probably should be FNR:
Code:
awk 'FNR==1 {offset=-$1;next} {$1+=offset; print >FILENAME".out"}' PS*.xyz

close() may be needed to prevent having too many files open.
Code:
awk 'FNR==1 {offset=$1;close(f);f=FILENAME".out";next}{$1-=offset; print >f}' GPS*.xyz

The next is there becasue I assume you don't want the line with the offset to be printed.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

File globbing order

Hi , I'm facing a different behaviour with one of my shell script for last few days. It was working good before that. here is my code for the script FileRemove.sh #get the file name# file1=$1 file2=$2 rm $file1 # delete the old file mv $file2 <target path> #move the new file to the target... (5 Replies)
Discussion started by: poova
5 Replies

2. Shell Programming and Scripting

Negation in Bash Globbing

$ ls -1 a.1 b.1 x_a.1 x_b.1 $ ls -1 * b.1 x_a.1 x_b.1 $ ls -1 ** a.1 b.1 x_a.1 x_b.1The last result is not as expected. Why? Thanks. (2 Replies)
Discussion started by: carloszhang
2 Replies

3. UNIX for Dummies Questions & Answers

File globbing questions

hi guys, jus some file globbing questions sed "s/^.*on//" what does the full stop and asterisk means? i onli know that ^ means inverse or not (1 Reply)
Discussion started by: ment0smintz
1 Replies

4. Shell Programming and Scripting

Globbing or not globbing

Hi guys, Here is a simple script. It writes the current time to specific files in a directory. The arguments are the names of the files to write the date to (without path nor extension). root:~# cat /usr/local/bin/dummy.sh #!/bin/sh -e for file in $@; do date >> /var/lib/$file.dat... (11 Replies)
Discussion started by: chebarbudo
11 Replies

5. Shell Programming and Scripting

Nested if question BASH

Just started learning bash ,and I am confused with sintaksis line 16: syntax error near unexpected token `else' thanks #!/bin/bash echo -n "Enter: " read num if(($(echo ${#num}) == 0 )) then echo No arguments passed.Try again elif rem=$(echo $num | tr -d ) ... (7 Replies)
Discussion started by: lio123
7 Replies

6. Shell Programming and Scripting

embarrassing question: is sh = bash ?

I would like to know the version of my shell. I usually type "sh scriptName". I googled for it and they usually say bash --version. But is the same shell ? Can I have installed multiple shells ? thanks (7 Replies)
Discussion started by: aneuryzma
7 Replies

7. UNIX for Dummies Questions & Answers

Bash Wildcard Question

Hi, I am writing a BASH script. In a directory I have a bunch of files of various filename structures. How do I list all the filenames that begin with either a capital or lowercase A or T. Is there one command that could replace the following 4: ls A* ls a* ls T* ls t* Thanks. Mike (3 Replies)
Discussion started by: msb65
3 Replies

8. Shell Programming and Scripting

globbing, $# is too high after wildcard expansion in bash script

How can I pass in an argument such as "*.k" to a bash script without having to double-quote *.k and not having *.k `glob` to match all files in the pattern? I tried using noglob in my script but this didn't work the way I thought it would.. expansion is still occuring, $# is higher than I... (3 Replies)
Discussion started by: zoo591
3 Replies

9. Shell Programming and Scripting

bash question

Hi Guys, I found this script for monitoring the status of a services: for i in syslogd cron; do if && ; then printf "%-8s" "$i";printf " is alive=A\n" else printf "%-8s" "$i";printf " is not alive\n" fi The script is working fine except if either syslogd or cron will have a defunct... (3 Replies)
Discussion started by: itik
3 Replies

10. Shell Programming and Scripting

Globbing slash Wildcarding Question

I am on HP-UX and I am trying to come up with a method to call in a list of files named like so. filename020107.dat filename020207.dat filename020307.dat Obviously I can list them ls them like so, ls filename*.dat. In case you did not notice the number is a date and I was hoping to match... (4 Replies)
Discussion started by: scotbuff
4 Replies
Login or Register to Ask a Question