Need to add prefix using sed or awk from cat the file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need to add prefix using sed or awk from cat the file
# 15  
Old 10-30-2017
Hello ranjancom2000,

Since you haven't mentioned that we have another data too apart from no_fast, so I haven't put any check/condition on same, could you please check following and let me know if this helps you.
Code:
awk '
FNR==NR{
  a[$0];
  next
}
{
num=split($1, array,",")
}
{
if(array[2] ~ "no_fast"){
  array[2]=$2 in a?"fast_found":"no_fast_no_found";
}
for(i=1;i<=num;i++){
  val=val?val","array[i]:array[i]
};
$1=val
}
{
print;
val=""
}' File-2 File-1

With your NEWLY provided Input_file, following will the output on same.
Code:
Frame1,Tier1,Server1, 120B N/A TDEV RW 34526
Frame1,Tier1,Server1, 120C N/A TDEV RW 34526
Frame1,Tier1,Server1, 120D N/A TDEV RW 34526
Frame1,Tier1,Server1, 120E N/A TDEV RW 34526
Frame1,Tier1,Server1, 120F N/A TDEV RW 34526
Frame1,Tier1,Server1, 1210 N/A TDEV RW 34526
Frame1,Tier1,Server1, 1211 N/A TDEV RW 34526
Frame1,Tier1,Server1, 1212 N/A TDEV RW 34526
Frame1,Tier1,Server1, 1213 N/A TDEV RW 34526
Frame1,Tier1,Server1, 1214 N/A TDEV RW 34526
Frame1,Tier1,Server1, 1215 N/A TDEV RW 34526
Frame1,Tier1,Server1, 1216 N/A TDEV RW 34526
Frame1,Tier1,Server1, 1217 N/A TDEV RW 34526
Frame1,Tier1,Server1, 1218 N/A TDEV RW 34526
Frame1,Tier1,Server1, 1219 N/A TDEV RW 34526
Frame1,Tier1,Server1, 121A N/A TDEV RW 34526
Frame1,Tier1,Server1, 121B N/A TDEV RW 34526
Frame1,Tier1,Server1, 121C N/A TDEV RW 34526
Frame1,Tier1,Server1, 121D N/A TDEV RW 34526
Frame1,Tier1,Server1, 121E N/A TDEV RW 34526
Frame1,Tier1,Server1, 121F N/A TDEV RW 34526
Frame1,no_fast_no_found,Server2, 2955 N/A RDF1+TDEV RW 69053
Frame1,no_fast_no_found,Server2, 2995 N/A RDF1+TDEV RW 138105
Frame1,no_fast_no_found,Server2, 2999 N/A RDF1+TDEV RW 138105
Frame1,no_fast_no_found,Server2, 299D N/A RDF1+TDEV RW 138105
Frame1,no_fast_no_found,Server2, 29A1 N/A RDF1+TDEV RW 138105
Frame1,no_fast_no_found,Server2, 29A5 N/A RDF1+TDEV RW 138105
Frame1,no_fast_no_found,Server2, 29A9 N/A RDF1+TDEV RW 138105
Frame1,no_fast_no_found,Server2, 29AD N/A RDF1+TDEV RW 138105
Frame1,no_fast_no_found,Server2, 29B1 N/A RDF1+TDEV RW 138105
Frame1,no_fast_no_found,Server2, 29B5 N/A RDF1+TDEV RW 138105
Frame1,no_fast_no_found,Server2, 2A73 N/A RDF1+TDEV RW 34526

Kindly do let me know if you have any queries on same.

Thanks,
R. Singh
This User Gave Thanks to RavinderSingh13 For This Post:
# 16  
Old 10-31-2017
hi RavinderSingh13,

It is working now now. This is new script I need to same format but i need to check two conduction from file2 and update in file1.

check the server name from file1 if the server found on file2. I need to take Tier value from file2 and update the record of file1 for that server for all device.



file1
Code:
Frame1,check_fast,Server1, 0EAD N/A TDEV RW 69053 
Frame1,check_fast,Server1, 0F36 N/A TDEV RW 34526 
Frame1,check_fast,Server1, 0F37 N/A TDEV RW 34526 
Frame1,check_fast,Server1, 0F38 N/A TDEV RW 34526 
Frame1,check_fast,Server1, 0F39 N/A TDEV RW 34526 
Frame1,check_fast,Server1, 0F3A N/A TDEV RW 34526 
Frame1,check_fast,Server1, 0F3B N/A TDEV RW 34526 
Frame1,check_fast,Server1, 0F3C N/A TDEV RW 34526 
Frame1,check_fast,Server1, 0F3D N/A TDEV RW 34526 
Frame1,check_fast,server2, 44F2 N/A TDEV RW 34526 
Frame1,check_fast,server2, 44F3 N/A TDEV RW 34526 
Frame1,check_fast,server2, 44F4 N/A TDEV RW 34526 
Frame1,check_fast,server2, 44F5 N/A TDEV RW 34526 
Frame1,check_fast,server2, 44F6 N/A TDEV RW 34526 
Frame1,check_fast,server2, 44F7 N/A TDEV RW 34526 
Frame1,check_fast,server2, 44F8 N/A TDEV RW 34526 
Frame1,check_fast,server2, 44F9 N/A TDEV RW 34526

file2
Code:
server1 Tier1
test Tier2
test_T1 Tier1

Need output

Code:
Frame1,Tier1,Server1, 0EAD N/A TDEV RW 69053 
Frame1,Tier1,Server1, 0F36 N/A TDEV RW 34526 
Frame1,Tier1,Server1, 0F37 N/A TDEV RW 34526 
Frame1,Tier1,Server1, 0F38 N/A TDEV RW 34526 
Frame1,Tier1,Server1, 0F39 N/A TDEV RW 34526 
Frame1,Tier1,Server1, 0F3A N/A TDEV RW 34526 
Frame1,Tier1,Server1, 0F3B N/A TDEV RW 34526 
Frame1,Tier1,Server1, 0F3C N/A TDEV RW 34526 
Frame1,Tier1,Server1, 0F3D N/A TDEV RW 34526 
Frame1,notin_fast,server2, 44F2 N/A TDEV RW 34526 
Frame1,notin_fast,server2, 44F3 N/A TDEV RW 34526 
Frame1,notin_fast,server2, 44F4 N/A TDEV RW 34526 
Frame1,notin_fast,server2, 44F5 N/A TDEV RW 34526 
Frame1,notin_fast,server2, 44F6 N/A TDEV RW 34526 
Frame1,notin_fast,server2, 44F7 N/A TDEV RW 34526 
Frame1,notin_fast,server2, 44F8 N/A TDEV RW 34526 
Frame1,notin_fast,server2, 44F9 N/A TDEV RW 34526

# 17  
Old 10-31-2017
Hello ranjancom2000,

Could you please try following and let me know if this helps you.
Code:
awk 'FNR==NR{a[$1]=$2;next} {$2=tolower($3) in a?a[tolower($3)]:"notin_fast"} 1' OFS="," FS=" "  Input_file2  FS=","   Input_file1

Output will be as follows.
Code:
Frame1,Tier1,Server1, 0EAD N/A TDEV RW 69053
Frame1,Tier1,Server1, 0F36 N/A TDEV RW 34526
Frame1,Tier1,Server1, 0F37 N/A TDEV RW 34526
Frame1,Tier1,Server1, 0F38 N/A TDEV RW 34526
Frame1,Tier1,Server1, 0F39 N/A TDEV RW 34526
Frame1,Tier1,Server1, 0F3A N/A TDEV RW 34526
Frame1,Tier1,Server1, 0F3B N/A TDEV RW 34526
Frame1,Tier1,Server1, 0F3C N/A TDEV RW 34526
Frame1,Tier1,Server1, 0F3D N/A TDEV RW 34526
Frame1,notin_fast,server2, 44F2 N/A TDEV RW 34526
Frame1,notin_fast,server2, 44F3 N/A TDEV RW 34526
Frame1,notin_fast,server2, 44F4 N/A TDEV RW 34526
Frame1,notin_fast,server2, 44F5 N/A TDEV RW 34526
Frame1,notin_fast,server2, 44F6 N/A TDEV RW 34526
Frame1,notin_fast,server2, 44F7 N/A TDEV RW 34526
Frame1,notin_fast,server2, 44F8 N/A TDEV RW 34526
Frame1,notin_fast,server2, 44F9 N/A TDEV RW 34526

Thanks,
R. Singh
# 18  
Old 10-31-2017
hi RavinderSingh13,

Great the script is working. But it ignore the host which is in CAPS. How i make the script to check ignore CAPS
# 19  
Old 10-31-2017
Quote:
Originally Posted by ranjancom2000
hi RavinderSingh13,
Great the script is working. But it ignore the host which is in CAPS. How i make the script to check ignore CAPS
Hello ranjancom2000,

I thought you don't care about the server names(you need not to keep case sensitive), if you need server keywords to be case sensitive then you could change from tolower($3) to normal $3. But again since I haven't seen any Input_file from you so this is a general statement, if your requirement differs then you have to show us the sample Input_file along with sample output too in code tags.

Thanks,
R. Singh
This User Gave Thanks to RavinderSingh13 For This Post:
# 20  
Old 10-31-2017
Yes now it was working great
# 21  
Old 11-02-2017
Hi RavinderSingh13,

I am trying to remove "forward shash" using sed it was not working

Code:
666,server1, 00973 N/A RDF1+TDEV RW 1035788

I need output
Code:
666,server, 00973,RDF1+TDEV,1035788

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Add the word "prefix" to beginning of line using sed

SUSE linux bash shell this works test -d /tmpp && echo "directory exists" || echo "directory doesn't exists" |sed -e "s/^/prefix /" prefix directory doesn't exists but why doesn't this work? test -d /tmp && echo "directory exists" || echo "directory doesn't exists" |sed -e... (3 Replies)
Discussion started by: snoman1
3 Replies

2. Shell Programming and Scripting

awk move select fields to match file prefix in two directories

In the awk below I am trying to use the file1 as a match to file2. In file2 the contents of $5,&6,and $7 (always tab-delimited) and are copied to the output under the header Quality metrics. The below executes but the output is empty. I have added comments to help and show my thinking. Thank you... (0 Replies)
Discussion started by: cmccabe
0 Replies

3. Shell Programming and Scripting

Extract Uniq prefix from a start and end prefix

Dear All, assume i have a file with content: <Start>6000</Start> <Stop>7599</Stop> the output is: 6000 7000 7100 7200 7300 7400 7599 how should we use any awk, sed, perl can do this task, means to extract the uniq prefixes from the start and stop prefix. Thanks Jimmy (3 Replies)
Discussion started by: jimmy_y
3 Replies

4. UNIX for Dummies Questions & Answers

How to pass cat file in awk statement?

Hi, I am working on kernel parameters, want to check values under /proc/sys/kernel below I tried for kernel.sem SEMMNS: 4096 cat /proc/sys/kernel/sem | awk '{print $2}' awk '{ if ($2 < 33000) print }' /proc/sys/kernel/sem |awk '{print $2}' 32000 The above... (7 Replies)
Discussion started by: stew
7 Replies

5. Linux

Adding a prefix to a column using awk/sed commands

Hello, I am a newbie to linux and struggling to find a better way to append a column in a text file. Here is the file i want to modify: It has 8 columns (and thousands of rows). I want to append the first column by adding "chr" infront of the numbers. Some rows have a string in the first... (4 Replies)
Discussion started by: bjorngill
4 Replies

6. Shell Programming and Scripting

awk or sed to add field in a text file

Hi there, I have a csv file with some columns comma sepated like this : 4502-17,PETER,ITA2,LEGUE,92,ME - HALF,23/05/10 15:00 4502-18,CARL,ITA2,LEGUE,96,ME - HALF,20/01/09 14:00 4502-19,OTTO,ITA2,LEGUE,97,ME - MARY,23/05/10 15:00 As you can see the column n. 7 is a timestamp column, I need... (23 Replies)
Discussion started by: capnino
23 Replies

7. Shell Programming and Scripting

Need awk script to add a prefix to each line in file

Hello , I have file with below content : '165567885', '165568443', '165568805', I need an awk script that would add a prefix zero after first ' . Like '0165567885', '0165568443', '0165568805', Please help. Thanks in advance. (5 Replies)
Discussion started by: rmv
5 Replies

8. Shell Programming and Scripting

Remove prefix using awk

Remove prefix using awk File: nawk -F"|" '{if ($1 ~ /^xyz./) print; else { gsub(.*\..*, \..*, $1) ;print }}' file Error: ouput required: (5 Replies)
Discussion started by: pinnacle
5 Replies

9. UNIX for Dummies Questions & Answers

tr, sed, awk, cat or scripting

I need to change all Newline caracters (\12) to Fieldseparator(\34). tr -A '\12' '\34' <file1> file2 Replace all delete (\177) with Newline (\12) tr -A '\177' '\12' <file2> file3 Put the name of the file first in all rows. awk '{printf "%s\34%s\n", FILENAME,$0} file3 > file4 So far no... (6 Replies)
Discussion started by: MrKlint
6 Replies

10. Shell Programming and Scripting

Problem to add the string(without sed & awk) into the middle of file

Hi, I have tried many times to add the string into the first line of the file or the middle of the file but could not find the solution. I first tried by $echo "paki" >> file This code only append paki string at the end of file "file" but how can i add this "paki" into the first line or... (5 Replies)
Discussion started by: ali hussain
5 Replies
Login or Register to Ask a Question