The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
.
google unix.com



Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
How to insert and delete any line after desire line RahulJoshi Shell Programming and Scripting 4 10-20-2008 11:27 AM
Need Script to insert colons in each line of file canopus15 UNIX for Dummies Questions & Answers 4 08-05-2008 09:03 PM
insert a line after specific line namishtiwari Shell Programming and Scripting 8 05-21-2008 03:16 PM
How to insert new line in the data file using the script Sona UNIX for Dummies Questions & Answers 2 08-22-2006 02:17 AM
Insert a line as the first line into a very huge file shriek UNIX for Advanced & Expert Users 3 03-09-2005 01:22 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
  #1 (permalink)  
Old 11-21-2008
appsguy616 appsguy616 is offline
Registered User
  
 

Join Date: Aug 2008
Posts: 27
awk script to compare and insert a line

Hi
I want to compare a string at fixed position 10-20 for all the lines starting with 6. if they dont match it should take a copy of a line starting with 1 and insert it before the line starting with 6. How do i this? Please help

Eg

1 test 1 765533 7643743
6 yes 3 5363653 373833
7 323323 4343434435 545
8 4345435435 5454545 55
7 323323 4343434435 545
6 yes 3 5373653 373833
7 323323 4343434435 545
8 4345435435 5454545 55
6 yes 3 5373653 373833
7 323323 4343434435 545
8 4345435435 5454545 55
6 yes 3 5383653 373833
7 323323 4343434435 545
8 4345435435 5454545 55

so the output should be

1 test 1 765533 7643743

6 yes 3 5363653 373833
7 323323 4343434435 545
8 4345435435 5454545 55
7 323323 4343434435 545
1 test 1 765533 7643743
6 yes 3 5373653 373833
7 323323 4343434435 545
8 4345435435 5454545 55
6 yes 3 5373653 373833
7 323323 4343434435 545
8 4345435435 5454545 55
1 test 1 765533 7643743
6 yes 3 5383653 373833
7 323323 4343434435 545
8 4345435435 5454545 55
  #2 (permalink)  
Old 11-22-2008
replytoshishir replytoshishir is offline
Registered User
  
 

Join Date: May 2006
Location: Bangalore
Posts: 23
can you please explain bit more..like what are you searching for and from which to which line nos.... i think i can help you.......

thnx shishir
  #3 (permalink)  
Old 11-22-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Join Date: Jan 2007
Location: Варна, България / Milano, Italia
Posts: 2,926
Given your sample data it seams that $4 will work fine.
Use nawk or /usr/xpg4/bin/awk on Solaris:


Code:
awk '/^1 / { s = $0 }
/^6 / && !t[$4]++ {
  c++ && $0 = s RS $0
  }1' infile

  #4 (permalink)  
Old 11-23-2008
summer_cherry summer_cherry is offline Forum Advisor  
Registered User
  
 

Join Date: Jun 2007
Location: Beijing China
Posts: 1,092
perl:

Code:
open FH,"<d:/a.txt";
while(<FH>){
	if(m/^1.*/){
		$line=$_;
		print;
		next;
	}
	if(m/^6.*/){
		@t=split;
		if($temp eq ""){
			$temp=$t[3];
			print;
		}
		else{
			if(!($t[3] eq $temp)){
				print $line;
				print $_;
				$temp=$t[3];
			}	
			else{
				print;
			}		
		}
	}
	else{print;}
}

  #5 (permalink)  
Old 11-23-2008
appsguy616 appsguy616 is offline
Registered User
  
 

Join Date: Aug 2008
Posts: 27
hi
The field is at fixed position 10-20 not the 4th field necessarily. Could you please help

Thanks
  #6 (permalink)  
Old 11-24-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Join Date: Jan 2007
Location: Варна, България / Milano, Italia
Posts: 2,926
But you put in red the positions 9-15, not 10-20!

With 9-15 it should be:


Code:
awk '/^1 / { s = $0 }
/^6 / && !t[substr($0,9,7)]++ {
  c++ && $0 = s RS $0
  }1' infile

If you really want 10-20, you should modify the arguments passed to substr.
  #7 (permalink)  
Old 11-24-2008
appsguy616 appsguy616 is offline
Registered User
  
 

Join Date: Aug 2008
Posts: 27
That works, Thanks very much.
Closed Thread

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT -4. The time now is 06:30 PM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
The UNIX and Linux Forums Content Copyright ©1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant URLs by vBSEO 3.2.0