Sed, awk or another bash command to modify string with the content of another file


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Sed, awk or another bash command to modify string with the content of another file
# 1  
Old 12-09-2019
Sed, awk or another bash command to modify string with the content of another file

Hello everybody,

I would like modify some strings using sed or another command line with the content file.

For example:
Code:
- {fqdn: "server-01" , ip: "server-01"}
- {fqdn: "server-02" , ip: "server-02"}
- {fqdn: "server-03" , ip: "server-03"}
- {fqdn: "server-04" , ip: "server-04"}

My goal is to remplace server01, server02 etc with the content of the following file:
Code:
cat /tmp/new_server
server-05
server-06
server-07
server-08

Do you have any idea to do that using AWK or SED ?

Thanks.

Last edited by vbe; 12-09-2019 at 05:51 PM.. Reason: code tags please
# 2  
Old 12-10-2019
Welcome!

What is more important than "our ideas" is what is your idea and what code have you tried and what output and / or errors did you get?
# 3  
Old 12-10-2019
Along with the other questions:-
  • Are you logically looking to just add 4 to the server number, or do you need to work out the highest numbered server and count on from there?
  • Are these decimal server numbers, hexadecimal, looked up from a list or something else perhaps?
  • What happens if you reach server 100, whatever your number format?


Kind regards,
Robin
# 4  
Old 12-10-2019
The following bash script replaces each server-* in file "your_example" with an item from file "new_server".
Bash needs an extra descriptor (here: 3) to open the second file.
Code:
#!/bin/bash
# glob-match for a server name
server_m="server-[0-9][0-9]"
while IFS= read -r line
do
  if [[ $line == *$server_m* ]]
  then
    read server_n <&3
    line=${line//$server_m/$server_n}
  fi
  echo "$line"
done < your_example 3< new_server

The same with awk, here a more powerful and precise ERE-match is used:
Code:
awk '
BEGIN {
# ERE-match for a server name
  server_m="\<server-[0-9]+"
}
$0~server_m {
  getline server_n < servers
  gsub(server_m,server_n,$0)
}
{ print }
' servers="new_server" your_example


Last edited by MadeInGermany; 12-11-2019 at 02:16 AM..
# 5  
Old 12-19-2019
How about
Code:
paste file[12] | awk '{gsub (/server-0[0-9]/, $NF); NF--} 1'

or
Code:
paste file[12] | sed -r 's/^(.*)((server-0)[0-9])(.*)\2(.*)(\3[0-9])/\1\6\4\6\5/'

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Awk/sed command to extract the string between 2 patterns but having some particular value

Hi - i have one file with content as below. ***** BEGIN 123 ***** BASH is awesome ***** END ***** ***** BEGIN 365 ***** KSH is awesome ***** END ***** ***** BEGIN 157 ***** KSH is awesome ***** END ***** ***** BEGIN 7123 ***** C is awesome ***** END ***** I am trying to find all... (4 Replies)
Discussion started by: reldb
4 Replies

2. Shell Programming and Scripting

Replace string of a file with a string of another file for matches using grep,sed,awk

I have a file comp.pkglist which mention package version and release . In 'version change' and 'release change' line there are two versions 'old' and 'new' Version Change: --> Release Change: --> cat comp.pkglist Package list: nss-util-devel-3.28.4-1.el6_9.x86_64 Version Change: 3.28.4 -->... (1 Reply)
Discussion started by: Paras Pandey
1 Replies

3. Shell Programming and Scripting

awk modify string

Hi Guys, i world like to do the following with awk, i have the the complete username example in a file a have some names Mario Rossi John Doe i would like to convert this name in this format from file with awk Mario,Rossi,"Mario Rossi ",m.rossi_ext@mydomain.com,$TRUE, John,Doe,"John... (7 Replies)
Discussion started by: charli1
7 Replies

4. Shell Programming and Scripting

Replace string in XML file with awk/sed with string from another

Sorry for the long/weird title but I'm stuck on a problem I have. I have this XML file: </member> <member> <name>TransactionID</name> <value><string>123456789123456</string></value> </member> <member> <name>Number</name> ... (9 Replies)
Discussion started by: cozzin
9 Replies

5. Shell Programming and Scripting

sed or awk command to replace a string pattern with another string based on position of this string

here is what i want to achieve... consider a file contains below contents. the file size is large about 60mb cat dump.sql INSERT INTO `table1` (`id`, `action`, `date`, `descrip`, `lastModified`) VALUES (1,'Change','2011-05-05 00:00:00','Account Updated','2012-02-10... (10 Replies)
Discussion started by: vivek d r
10 Replies

6. Shell Programming and Scripting

Modify the file with awk,sed or perl

Hi All, I need help from any of you.Would be so thankful for your help. I/P DDDD,1045,161,1557,429,1694,800,1911,1113,2460,1457,2917> 1609,3113,1869,3317,2732,3701,3727,4132,5857,5107> 9004,6496 DDDD,1125,157,1558,429,1694,800,1911,1117,2432,1444,2906>... (2 Replies)
Discussion started by: Indra2011
2 Replies

7. Shell Programming and Scripting

How can i delete the content between all the occurences of two strings using sed or awk command

Hi. I have to delete the content between all the occurrences of the xml tags in a single file. For example: * The tags <script>.....................</script> occurs more than once in the same file. * It follows tagging rules meaning a start tag will be followed by an end tag. Will not have... (9 Replies)
Discussion started by: satheeshkumar
9 Replies

8. Shell Programming and Scripting

Script to open a saved file and modify the content

I am looking for a script where I need to open a file and modify the data like changing the parameters.Can anyone help me? open a file software.rsp . It already contains following data. parameter = false threads=100 user= demf The above should be changed to paramter=true thread= 133... (3 Replies)
Discussion started by: sriki32
3 Replies

9. Shell Programming and Scripting

awk/sed/perl command to delete specific pattern and content above it...

Hi, Below is my input file: Data: 1 Length: 20 Got result. Data: 2 Length: 30 No result. Data: 3 Length: 20 (7 Replies)
Discussion started by: edge_diners
7 Replies

10. Shell Programming and Scripting

Read a file content with awk and sed

Hello , I have huge file with below content. I need to read the numeric values with in the paranthesis after = sign. Please help me with awk and sed script for it. 11.10.2009 04:02:47 Customer login not found: identifier=(0748502889) prefix=(TEL) serviceCode=(). 11.10.2009 04:03:12... (13 Replies)
Discussion started by: rmv
13 Replies
Login or Register to Ask a Question