I am very sorry for my late reply.Still the it is changing the second line withe below code.
When i use AWK command.I am getting the below error.
The code should search for leprechaun.host.uri.list=raft:// and it should only replace this line of first occurance and not touching the second occurance in the file.And i don't know the search is in which line.
Please let me know if i am clear or not.
Last edited by Don Cragun; 12-30-2013 at 12:27 AM..
Reason: Add CODE and ICODE tags.
You are not at all clear!
In your original message in this thread you said you had a file named hostsocket.txt that contains:
and that after changing one line shown in blue above and below, it should look like:
But, in addition to the changes marked in blue, the stuff marked in red in the original file was removed and the stuff in red in the updated file was added.
There are lots of fairly simple ways to do what your English description says you want to do. Akshay provided an awk script that comes close to producing the output you showed in your sample from your sample input, if you change:
in his script to:
except that it doesn't remove the trailing circumflex from the 4th line of the input file.
The following alternative awk script seems to transform your sample input into what you said your output should be:
Due to the considerable discrepancies between your description of what this script should do and the sample input and output provided, Akshay's script and this script make LOTS of assumptions (although his script and my script make different assumptions) that might or might not be what you want.
If you want to try this on a Solaris/SunOS system, change awk to /usr/xpg4/bin/awk, /usr/xpg6/bin/awk, or nawk.
If you give us a clear description of what you're trying to do and sample input and output that match that description, you stand a much better chance of getting a solution to your problem that doesn't waste out time. (And please use CODE tags.)
Thanks a lot for your quick reply.And also i know your precious time should not be wasted.This code is working only for the sample input which i given.But i have lot many files like this.So i am passing parameters to change the file.I am not good in awk.So usually use sed to pass the parameters of RAFTIP and RAFTPORT to change hostsocket.txt.If i use awk script for my orginal file.It's going to infinite loop.Please help me with the script with what ever the file it may be.
The above code is working fine.But it is replacing in all the matches.
You have already found that sed is not well suited to replacing only one occurrence of a string in a file.
We have shown you how to use awk to make the 3 different sets of changes you showed between your sample input and your sample output. You still have not given us an English specification of all of the changes that should be made to the input to produce the output. So, we have to assume that your real input does not match the assumptions we have made about your actual input based on the sample input you showed us.
Trying to guess at an input file specification from a short sample always leaves us to make assumptions. If our awk script are going into infinite loops, your real input does not match the assumptions we had to make from your sample input.
If you give us:
the OS and release of that OS that you're using,
the shell you're using,
a clear specification of your input file format,
a clear specification of all of the transformations to be made to turn your input into your desired output, and
sample input and output files that match the above specifications
we may be able to help you come up with a script to do it. If you insist on using sed (with or without grep) to make the types of transformations you've shown us, you're out of luck.
Thanks for your reply.I am felxible to anything if it is AWK or sed.
Please find the below details about the environment which i am using.
Os AIX and /usr/bin/ksh
If you need full log it's too big.If you need it i can provide you.The fomat which i sent it right format.No any other changes in the format.
search string:
rt920test.info53.com and 22025 are variables which i am passing through command promt.so these values are not fixed and the log file is also not fixed.
Replace string:
But the code which was provided is working for the sample input which i given.
Thanks for your reply.I am felxible to anything if it is AWK or sed.
Please find the below details about the environment which i am using.
Os AIX and /usr/bin/ksh
If you need full log it's too big.If you need it i can provide you.The fomat which i sent it right format.No any other changes in the format.
search string:
rt920test.info53.com and 22025 are variables which i am passing through command promt.so these values are not fixed and the log file is also not fixed.
Replace string:
But the code which was provided is working for the sample input which i given.
Please let me know if you need any more details.
Is the source that is producing hostsocket.txt a windows system? You never said anything before about having <carriage-return><newline> as your line terminator (rather than the standard UNIX <newline> by itself) before. Your sample file didn't have any <carriage-return> characters in it.
Are you copying our suggested code onto your system using an editor that uses <carriage-return><newline> instead of <newline> as line terminators? If so, it is no wonder that none of our code is working for you on AIX.
Does your input file really contain <carriage-return> characters?
Do you really want <carriage-return> characters in the output?
Do you want the script to remove the trailing circumflex characters as shown in your first example?
Do you want the script to add lines as shown in your first example?
To identify the line to be changed, which of the following do we need to match at the start of a line:
(where <carriage-return> is a visual representation of the single-byte carriage return character)? If it is one of the first two above, am I correct in assuming that we should accept the match only if the match is to the entire input line? You seem to be supplying your script with only the replacement text rather than the details of the IP and Port that are being changed, and your grep was looking for the next to the last entry above; but you latest message seems to be saying we should look for one of the first two???
I tested the code without <carriage-return> for the i/p file.but still it is going to infinite loop as below.
Does your input file really contain <carriage-return> characters?
Yes it contains each and every line of the inputfile.
Do you really want <carriage-return> characters in the output?
It can be removed or if it is there also not a problem
Do you want the script to remove the trailing circumflex characters as shown in your first example?
No need
Do you want the script to add lines as shown in your first example?
To identify the line to be changed, which of the following do we need to match at the start of a line:
Hi,
I have some data like below:
John 254
Chris 254
Matt 123
Abe 123
Raj 487
Moh 487
How can i print it using awk to have:
254 John,Chris
123 Matt,Abe
487 Raj,Moh
Thanks. (4 Replies)
I am trying to combine lines with these conditions:
1. First line starts with text of "libname VALUE db2 datasrc" where VALUE can be any text.
2. If condition1 is met then continue to combine lines through a line that ends with a semicolon.
3. Ignore case when matching patterns and remove any... (5 Replies)
Im using the command below , but thats not the output that i want. it only prints the odd and even numbers.
awk '{if(NR%2){print $0 > "1"}else{print $0 > "2"}}'
Im hoping for something like this
file1:
Text hi this is just a test
text1 text2 text3 text4 text5 text6
Text hi... (2 Replies)
not getting anywhere with this
an xml file contains multiple clients set up with same tags, different values.
I need to parse the file for client foo, and change the value of tag "64bit" from false to true.
cat clients.xml
<Client type"FIX">
<ClientName>foo</ClientName>... (3 Replies)
Hi How Are you?
I am doing fine!
I need to go now?
I will see you tomorrow!
Basically I need to replace the entire line containing "doing" with a blank line:
I need to the following output:
Hi How Are you?
I need to go now?
I will see you tomorrow!
Thanks in advance.... (1 Reply)
Hi. I'd appreciate if I can get some direction in this issue to get me going.
Datafile1:
-About 4000 records, I have to update field#4 in selected records based on a match in the key field (Field#1).
-Field #1 is the key field (servername) . # of Fields may vary
# comment
server1 bbb ccc... (2 Replies)
Hi folks,
I've list of LDAP records in this format:
cat cmmac.export.tmp2
dn: deviceId=0a92746a54tbmd34b05758900131136a506,ou=devices,ou=customer,ou=nl,o=upc
cmmac: 00:13:11:36:a5:06
dn: deviceId=0a92746a62pbms4662299650015961cfa23,ou=devices,ou=customer,ou=nl,o=upc
cmmac:... (4 Replies)
Hi All,
Does anyone know how to print 1H1A....... in peal script
print line ^1H1A....... if next line equal 5R0RECEIPT....
Thank for help:D
Cat st.txt
1H1A-IN-11-5410-0009420|1010047766|dsds|1|N|IN|IN|000000|1||N|<<<line match
5R0RECEIPT|
5R0RECEIPT|... (2 Replies)
Hi,
I'm struggling to write a script to do the following,
-will go through each line in the file
-in a specific character positions, changes
the value to a new value
-These character positions are fixed througout the file
-----------------------
e.g.: file1.sh will have the following 3... (4 Replies)
I need to replace the line containing "STAGE_DB" with the line
"STAGE_DB $DB # database that contains the table being loaded ($workingDB)"
Here $DB is passed during the runtime.
How can I do this?
Thanks,
Kousikan (2 Replies)