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
Replace field in csv pcboss Linux 4 01-19-2008 06:24 PM
how to replace field for each record happyv Shell Programming and Scripting 12 06-26-2007 08:56 AM
Replace password field using ed/sed munch UNIX for Dummies Questions & Answers 6 05-01-2007 12:01 AM
find pattern and replace another field sergiioo Shell Programming and Scripting 3 04-11-2007 01:19 AM
Find and Replace code help needed E Orgill UNIX for Dummies Questions & Answers 2 08-24-2005 04:05 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 08-31-2007
jkl_jkl jkl_jkl is offline
Registered User
  
 

Join Date: Aug 2007
Posts: 46
awk: find and replace in certain field only, help needed

I got a sample file like this.

$ cat test
12|13|100|s
12|13|100|s
100|13|100|s
12|13|100|s

I want to replace all 100 by 2000 only in 3rd field using "awk"

This is replacing all 100's :-(
$ awk -F "|" '{gsub( /100/,"2000");print}' test
12|13|2000|s
12|13|2000|s
2000|13|2000|s
12|13|2000|s

I tried using something like this also - '$3 ~ /100/
but no luck :-(

Please help.

HTH,
jkl_jkl
  #2 (permalink)  
Old 08-31-2007
kamitsin's Avatar
kamitsin kamitsin is offline
Registered User
  
 

Join Date: Nov 2006
Location: /dev/null
Posts: 177
use sed instead.


Code:
/home/kamitsin>sed 's/|100/|2000/g' s2

HTML Code:
12|13|2000|s
12|13|2000|s
100|13|2000|s
12|13|2000|s
Cheers,
K
  #3 (permalink)  
Old 08-31-2007
ahmedwaseem2000 ahmedwaseem2000 is offline
Registered User
  
 

Join Date: Aug 2005
Location: Bangalore
Posts: 219
Try this:


Code:
awk -F "|" '{ if ( $3 == 100 ) print $1"|"$2"|"2000"|"$4 }' test

  #4 (permalink)  
Old 08-31-2007
ghostdog74 ghostdog74 is offline Forum Advisor  
Registered User
  
 

Join Date: Sep 2006
Posts: 2,555

Code:
awk 'BEGIN{OFS=FS="|"}$3==100{$3=2000}{print}' file

  #5 (permalink)  
Old 08-31-2007
jkl_jkl jkl_jkl is offline
Registered User
  
 

Join Date: Aug 2007
Posts: 46
Quote:
Originally Posted by ghostdog74 View Post
Code:
awk 'BEGIN{OFS=FS="|"}$3==100{$3=2000}{print}' file
This is a nice reply(more generic) , worked for me :-) Thanks :-)
  #6 (permalink)  
Old 02-21-2008
Jolly Jolly is offline
Registered User
  
 

Join Date: May 2007
Posts: 8
Unhappy Hurry !!! Its very urgent for me...

Hi All,

Need a quick help on the similar issue...I am trying to replace the 87th column ina file with some other value but this command doesn't work for me.

awk 'BEGIN{OFS=FS=";"}$87==10000019{$9=123456700}{print}' ab

Can someone help please...
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 02:10 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