Sponsored Content
Top Forums Shell Programming and Scripting awk: Print fields between two delimiters on separate lines and send to variables Post 302686373 by Corona688 on Tuesday 14th of August 2012 11:22:39 AM
Old 08-14-2012
Mind incorporating some of the fixes I gave you...? They do make it make less mess...
Quote:
Originally Posted by tay9000
Thanks a lot for your help. I've learned a bit. I've basically got the script completely working as below (still need to clean it up a little). The only big problem I have right now is I would like to loop on output from find "/home/tay/spam-all/spam" -iname "*.gz" -mtime 1 | xargs ls -t instead of the entire directory.

I've tried for FILE in `find "/home/tay/spam-all/spam" -iname "*.gz" -mtime 1 | xargs ls -t` and for FILE in $Spams but the script treats the output as one filename and then errors out saying the filename is too long.
When all you have is a for loop, all problems look like nails, but not everything needs a hammer. There are better options. See Useless Use of Backticks.

Code:
find "/home/tay/spam-all/spam" -iname "*.gz" -mtime 1 | xargs ls -t > /tmp/$$-spams

while read LINE
do
        echo got "$LINE"
done </tmp/$$-spams
rm -f /tmp/$$-spams

Quote:
The other minor issue is that I need to add <table> and </table> to the beginning and ends of the outputted files.
Show the input you have and the output you want. A script which won't do what can't tell me what you do want.

Putting it in a temp file avoids the problem of variables inside the while-loop not being seen in the rest of the script.

Also: You don't need to open a file 500 times to write 500 lines to it.

Code:
for i in $To
do
echo "<tr><td>$From</td><td>$Subject</td><td><td>$Score</td><td>$TimeHuman</td><td>$ID</td></tr>"
done > $WorkingDir/$i

Your set -- $To appears useless, remove it.

Last edited by Corona688; 08-14-2012 at 12:29 PM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

trying to print selected fields of selected lines by AWK

I am trying to print 1st, 2nd, 13th and 14th fields of a file of line numbers from 29 to 10029. I dont know how to put this in one code. Currently I am removing the selected lines by awk 'NR==29,NR==10029' File1 > File2 and then doing awk '{print $1, $2, $13, $14}' File2 > File3 Can... (3 Replies)
Discussion started by: ananyob
3 Replies

2. Shell Programming and Scripting

extract nth line of all files and print in output file on separate lines.

Hello UNIX experts, I have 124 text files in a directory. I want to extract the 45678th line of all the files sequentialy by file names. The extracted lines should be printed in the output file on seperate lines. e.g. The input Files are one.txt, two.txt, three.txt, four.txt The cat of four... (1 Reply)
Discussion started by: yogeshkumkar
1 Replies

3. Shell Programming and Scripting

Compare Tab Separated Field with AWK to all and print lines of unique fields.

Hi. I have a tab separated file that has a couple nearly identical lines. When doing: sort file | uniq > file.new It passes through the nearly identical lines because, well, they still are unique. a) I want to look only at field x for uniqueness and if the content in field x is the... (1 Reply)
Discussion started by: rocket_dog
1 Replies

4. Shell Programming and Scripting

awk print header as text from separate file with getline

I would like to print the output beginning with a header from a seperate file like this: awk 'BEGIN{FS="_";print ((getline < "header.txt")>0)} { if (! ($0 ~ /EL/ ) print }" input.txtWhat am i doing wrong? (4 Replies)
Discussion started by: sdf
4 Replies

5. Shell Programming and Scripting

Print only lines where fields concatenated match strings

Hello everyone, Maybe somebody could help me with an awk script. I have this input (field separator is comma ","): 547894982,M|N|J,U|Q|P,98,101,0,1,1 234900027,M|N|J,U|Q|P,98,101,0,1,1 234900023,M|N|J,U|Q|P,98,54,3,1,1 234900028,M|H|J,S|Q|P,98,101,0,1,1 234900030,M|N|J,U|F|P,98,101,0,1,1... (2 Replies)
Discussion started by: Ophiuchus
2 Replies

6. Shell Programming and Scripting

How to print 1st field and last 2 fields together and the rest of the fields after it using awk?

Hi experts, I need to print the first field first then last two fields should come next and then i need to print rest of the fields. Input : a1,abc,jsd,fhf,fkk,b1,b2 a2,acb,dfg,ghj,b3,c4 a3,djf,wdjg,fkg,dff,ggk,d4,d5 Expected output: a1,b1,b2,abc,jsd,fhf,fkk... (6 Replies)
Discussion started by: 100bees
6 Replies

7. Shell Programming and Scripting

awk sort based on difference of fields and print all fields

Hi I have a file as below <field1> <field2> <field3> ... <field_num1> <field_num2> Trying to sort based on difference of <field_num1> and <field_num2> in desceding order and print all fields. I tried this and it doesn't sort on the difference field .. Appreciate your help. cat... (9 Replies)
Discussion started by: newstart
9 Replies

8. UNIX for Beginners Questions & Answers

How to count lines of CSV file where 2 fields match variables?

I'm trying to use awk to count the occurrences of two matching fields of a CSV file. For instance, for data that looks like this... Joe,Blue,Yes,No,High Mike,Blue,Yes,Yes,Low Joe,Red,No,No,Low Joe,Red,Yes,Yes,Low I've been trying to use code like this... countvar=`awk ' $2~/$color/... (4 Replies)
Discussion started by: nmoore2843
4 Replies

9. Shell Programming and Scripting

awk to print line is values between two fields in separate file

I am trying to use awk to find all the $3 values in file2 that are between $2 and $3 in file1. If a value in $3 of file2 is between the file1 fields then it is printed along with the $6 value in file1. Both file1 and file2 are tab-delimited as well as the desired output. If there is nothing to... (4 Replies)
Discussion started by: cmccabe
4 Replies

10. Shell Programming and Scripting

awk to print lines based on text in field and value in two additional fields

In the awk below I am trying to print the entire line, along with the header row, if $2 is SNV or MNV or INDEL. If that condition is met or is true, and $3 is less than or equal to 0.05, then in $7 the sub pattern :GMAF= is found and the value after the = sign is checked. If that value is less than... (0 Replies)
Discussion started by: cmccabe
0 Replies
rcp(1c) 																   rcp(1c)

Name
       rcp - remote file copy

Syntax
       rcp [ -p ] file1 file2
       rcp [-r] [-p] file... directory

Description
       The command copies files between machines.  Each file or directory argument is either a remote file name of the form rhost:path, or a local
       file name.  Local file names do not contain colons (:) or backslashes () before colons.

       Note that the command refuses to copy a file onto itself.

       If path is not a full path name, it is interpreted relative to your login directory on rhost.  To ensure that the metacharacters are inter-
       preted  remotely,  a  remote  host's  path  can be quoted by either using a backslash () before a single character, or enclosing character
       strings in double (") or single (') quotes.

       The command does not prompt for passwords; your current local user name must exist on rhost and allow remote command execution via

       The command handles third party copies, where neither source nor target files are on the current machine.  Hostnames may also take the form
       rname@rhost  to	use rname rather than the current user name on the remote host.  The following example shows how to copy the file foo from
       user1@mach1 to user2@mach2:
	$ rcp user1@mach1:foo  user2@mach2:foo
       Note that the file .rhosts on mach2 in user2's account must include an entry for mach1 user1.  Also note that it may be necessary  for  the
       person implementing the command to be listed in the .rhosts file for mach1 user1.

       By  default,  the mode and owner of file2 are preserved if file2 already exists.  Otherwise, the mode of the source file modified by on the
       destination host is used.

Options
       -p   Preserves the modification times and modes of the source files in its copies, ignoring the

       -r   Copies files in all subdirectories recursively, if the file to be copied is a directory.  In this  case  the  destination  must  be  a
	    directory.

Restrictions
       The  command  is  confused by output generated by commands in a .cshrc file on the remote host.	In particular, `where are you?' and `stty:
       Can't assign requested address' are messages which can result if output is generated by the startup file.

See Also
       ftp(1c), rlogin(1c), rsh(1c)

																	   rcp(1c)
All times are GMT -4. The time now is 02:11 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy