Nike
Nike

Reputation: 43

How to awk to find and replace string in 2,3,4 and 5th column if matching pattern exist

My text file consist of 5 columns. Based on the user input want to search only in 2nd, 3rd, 4th and 5th column and replace it.

for example

oldstring="Old_word" 
newstring="New_word"

So want to find all the exact match of oldstring and replace the same with newstring. Column one should be untouched even if there is a match.

Browsed and found that awk will do but I am able to change in one particular column.

bash script

Upvotes: 0

Views: 407

Answers (2)

kvantour
kvantour

Reputation: 26481

Another way, similar to Glenn Jackman's answer is :

$ awk -F, -v OFS=, -v old="Old_word" -v new="New_word" '{
      s=$1; $1=""; gsub(old,new,$0); $1=s
      print }' <file>

Upvotes: 1

glenn jackman
glenn jackman

Reputation: 246942

$ cat testfile
a,b,c Old_word,d,e
f,gOld_wordOld_wordOld_words,h,i,j

$ awk -F, -v OFS=, -v oldstring="Old_word" -v newstring="New_Word" '{
    for (i=2; i<=5; i++) { gsub(oldstring,newstring,$i) }
    print
}' testfile
a,b,c New_Word,d,e
f,gNew_WordNew_WordNew_Words,h,i,j

For more information about read the awk info page

Upvotes: 1

Related Questions