How to extract string between two specified characters and end of line?


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers How to extract string between two specified characters and end of line?
# 1  
Old 02-28-2020
How to extract string between two specified characters and end of line?

Hi All,

I am trying to extract a string between two characters in a file and then look up that string in a separate file. E.g. first file is ABC.txt and its contents are
Code:
abc.$$Date
xyz.$$Year.dat
abc.xyz.$$Unit

I want to extract Date in the first line , Year in the second line and Unit in the third line and look it up in a separate file xyz.txt. I tried sed command but missing something. Any help is appreciated.
Moderator's Comments:
Mod Comment
Please use code tags when posting data and code samples!

Last edited by vgersh99; 02-28-2020 at 07:51 PM.. Reason: code tags, please!
# 2  
Old 02-28-2020
Could you show what you've tried and what you think is "missing"?
# 3  
Old 03-02-2020
I used this
Code:
sed 's/.*\$//' test.txt >> aaa.txt

This command works to fetch the data correctly from the $$ till the end of line. But its not sufficing the condition to fetch data from $$ to .

Moderator's Comments:
Mod Comment
Use code tags as required by rules please.
Second time this is mentioned, do not ignore it.

Last edited by Peasant; 03-02-2020 at 12:07 PM..
# 4  
Old 03-03-2020
Simply use two s commands:
Code:
sed 's/.*\$\$//; s/\..*//' test.txt

In the case there is no $$ it will still remove everything after a dot.
The following would avoid that:
Code:
sed '/.*\$\$/ { s///; s/\..*//; }' test.txt

The / / is a selector that works like an if. If true the code in the { } braces is run. The first s command substitutes what matched in the previous / /.
This User Gave Thanks to MadeInGermany For This Post:
# 5  
Old 03-03-2020
Thanks a lot @MadeInGermany. Now if I want to lookup these values in a separate file and substitute the params with actual values what will the code be. Like My other file is having values for all these params like

Code:
$$Date=20200303
$$Year=2020
$$Unit=201

The final file will look like this
Code:
abc.20200303
xyz.2020.dat
abc.xyz.201

--- Post updated at 04:33 PM ---

I am trying with this but getting error.

Code:
#!/bin/bash
BASEDIR=/home/wip4599/
IFILEEXTN=bbb.txt
 key= $(sed 's/\(.*\)\=.*/\1/' bbb.txt)
  value=$(sed 's/.*\=//g' bbb.txt)
  sed 's/$key/$value/g' test.txt
done < $input"

Moderator's Comments:
Mod Comment
Please use code tags when posting data and code samples!

Last edited by vgersh99; 03-03-2020 at 11:43 AM.. Reason: code tags, please!
# 6  
Old 03-03-2020
when you say I am trying with this but getting error., what does it exactly mean?
What error?
What have you done to investigate the "error"?
Have you considered changing this sed 's/$key/$value/g' to that sed "s/$key/$value/g" ?
# 7  
Old 03-03-2020
The s command in sed takes one $key value and one $value value.
Apparently you need a loop that in each cycle gives one $key/$value pair.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grep a particular string from column eliminating characters at the end.

Hi, So basically I have this file containing query output in seperated columns. In particular column I have the below strings: news news-prio I am trying to grep the string news without listing news-prio aswell. I tried grep "$MSG_TYPE" , grep -w "$MSG_TYPE" , grep... (4 Replies)
Discussion started by: nms
4 Replies

2. Red Hat

How to add a new string at the end of line by searching a string on the same line?

Hi, I have a file which is an extract of jil codes of all autosys jobs in our server. Sample jil code: ************************** permission:gx,wx date_conditions:yes days_of_week:all start_times:"05:00" condition: notrunning(appDev#box#ProductLoad)... (1 Reply)
Discussion started by: raghavendra
1 Replies

3. Shell Programming and Scripting

How to extract text from STRING to end of line?

Hi I have a very large data file with several hundred columns and millions of lines. The important data is in the last set of columns with variable numbers of tab delimited fields in front of it on each line. Im currently trying sed to get the data out - I want anything beetween :RES and... (4 Replies)
Discussion started by: Manchesterpaul
4 Replies

4. UNIX for Dummies Questions & Answers

How to specify beginning-of-line/end-of-line characters inside a regex range

How can I specify special meaning characters like ^ or $ inside a regex range. e.g Suppose I want to search for a string that either starts with '|' character or begins with start-of-line character. I tried the following but it does not work: sed 's/\(\)/<do something here>/g' file1 ... (3 Replies)
Discussion started by: jawsnnn
3 Replies

5. UNIX for Dummies Questions & Answers

Removing characters from end of string

Hello, I have records like below that I want to remove any five characters from the end of the string before the double quotes unless it is only an asterik. 3919,5020 ,04/17/2012,0000000000006601.43,,0000000000000000.00,, 132, 251219,"*" 1668,0125 ... (2 Replies)
Discussion started by: jyoung
2 Replies

6. Shell Programming and Scripting

adding characters end of line where line begins with..

Hi all, using VI, can anyone tell me how to add some characters onto the end of a line where the line begins with certain charactars eg a,b,c,......., r,s,t,........, a,b,c,......., all lines in the above example starting with a,b,c, I want to add an x at the end of the line so the... (6 Replies)
Discussion started by: satnamx
6 Replies

7. Shell Programming and Scripting

Get the 1st 99 characters and add new line feed at the end of the line

I have a file with varying record length in it. I need to reformat this file so that each line will have a length of 100 characters (99 characters + the line feed). AU * A01 EXPENSE 6990370000 CWF SUBC TRAVEL & MISC MY * A02 RESALE 6990788000 Y... (3 Replies)
Discussion started by: udelalv
3 Replies

8. AIX

CUT command - cutting characters from end of string

Hello, I need to delete the final few characters from a parameter leaving just the first few. However, the characters which need to remain will not always be a string of the same length. For instance, the parameter will be passed as BN_HSBC_NTRS/hub_mth_ifce.sf. I only need the bit before the... (2 Replies)
Discussion started by: JWilliams
2 Replies

9. Shell Programming and Scripting

Extract digits at end of string

I have a string like xxxxxx44. What's the best way to extract the digits (one or more) in a ksh script? Thanks (6 Replies)
Discussion started by: offirc
6 Replies

10. Shell Programming and Scripting

Removing characters from end of $string

I am writing a script to search PCL output and append more PCL data to the end accordingly. I need to remove the last 88 bytes from the string. I have searched for a few hours now and am coming up with nothing. I can't use head or tail because the PCL output is all on one line. awk crashes on... (3 Replies)
Discussion started by: craig2k
3 Replies
Login or Register to Ask a Question