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


Login or Register for Dates, Times and to Reply

 
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  
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 06:51 PM.. Reason: code tags please
# 2  
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  
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  
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 03:16 AM..
# 5  
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 for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #228
Difficulty: Easy
According to NetMarketShare, in September 2019 Linux had a 5% global market share of the desktop / laptop computer market.
True or False?

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

Featured Tech Videos