Sponsored Content
Top Forums Shell Programming and Scripting Sed question to substitute data in \2 Post 302425388 by alister on Thursday 27th of May 2010 06:27:04 PM
Old 05-27-2010
Code:
sed 'h; s/=.*/=/; x; s/^[^=]*=//; s/change/different/g; H; g; s/\n//'


Sample run:
Code:
$ cat data
somechangeVariable1=Something I would like to change something
somechangeVariable2=Something else I would like to change else
somechangeVariable3=change change change and still more change
leavealone=nothing to see here
$ sed 'h; s/=.*/=/; x; s/^[^=]*=//; s/change/different/g; H; g; s/\n//' data
somechangeVariable1=Something I would like to different something
somechangeVariable2=Something else I would like to different else
somechangeVariable3=different different different and still more different
leavealone=nothing to see here


Explanation:

1. h: Copy the original, pristine, unaltered line to the hold space, for future use.
2. s/=.*/=/: From the current line, remove everything that follows the equals sign inclusive, replacing it with just the equals sign. What remains is the variable name (with the trailing equals sign), in which we are not interested in substituting anything.
3. x: Store the variable name in the hold space by swapping the pattern and hold spaces. The original version of the line is now back in the pattern space.
4. s/^[^=]*=//: Remove all leading characters that are not an equals sign and the first equals sign, leaving nothing but the text of interest to the primary substitution operation.
5. s/change/different/g: Substitute each instance of "change" with "different" in the relevant text.
6. H: Append the resulting string to the variable name which we've kept tucked away in the hold space.
7. g: Copy the hold space to the pattern space.
8. s/\n//: Remove the newline that was inserted between the variable name and variable value by step 6's H command.

Last edited by alister; 05-27-2010 at 07:38 PM..
These 2 Users Gave Thanks to alister For This Post:
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

sed substitute situation

I am having a problem executing a sed substitute in a file. I have tried alot of different things I found in previous posts, however non seem to work. I want to substitute this in $FILE: VALUE=33.4 In the script I have tried the following: prev=$(awk -F"=" '{ print $2 }' $FILE ) new=$(echo... (16 Replies)
Discussion started by: newbreed1
16 Replies

2. Shell Programming and Scripting

Using SED to substitute between two patterns.

Hi All, I'm currently using SED to make various changes to some .xml files I'm working on, but I'm stuck on this particular problem. I want to remove '<placeholder>element-name</placeholder>' from the following: <heading>Element <placeholder>element-name</placeholder> not... (2 Replies)
Discussion started by: Steve_altius
2 Replies

3. Shell Programming and Scripting

Using sed to substitute first occurrence

I am trying to get rid of some ending tags but I run into some problems. Ex. How are you?</EndTag><Begin>It is fine.</Begin><New> Just about I am trying to get rid of the ending tags, starts with </ and ending with >. (which is </EndTag> and </Begin>) I tried the following sed... (2 Replies)
Discussion started by: quixoticking11
2 Replies

4. UNIX for Dummies Questions & Answers

Using sed to substitute between quotes.

I'm using sed to perform a simply search and replace. The typical data is: <fig><image href="Graphics/BAV.gif" align="left" placement="break" I need to replace the value in the first set of quotes, keeping the remainder of the line the same. Thus: <fig><image href="NEW_VALUE" align="left"... (3 Replies)
Discussion started by: Steve_altius
3 Replies

5. Shell Programming and Scripting

using sed or gsub to substitute characters!

Is there a way to substitute the URL-encoding references of ( & and ` ) with their actual appearance? for example.... %26 is & say I want to convert every %26 in my file to &..... awk '{gsub(/%26/,"&");print}' Is there a way to do this? I also want to be able to convert ` too! (3 Replies)
Discussion started by: puttster
3 Replies

6. Shell Programming and Scripting

using awk to substitute data in a column delimited text file

using awk to substitute data in a column delimited text file hello i would like to use awk to do the following calculation from the following snippet. input file C;2390 ;CV BOUILLOTTE 2L 2FACES NERVUREES ;1.00 ;3552612239004;13417 ;25 ;50 ; 12;50000 ; ; ... (3 Replies)
Discussion started by: iindie
3 Replies

7. Shell Programming and Scripting

Substitute partial data only within a xml tag

Hello, I have huge xml files and I need to replace only part of the data within a particular xml tag. This doesnt seem to be as simple as it sounds. I have searched everywhere and couldnt find any solution. Ex: In the below case I would like "def" to be replaced by "xyz" only when found in... (8 Replies)
Discussion started by: roshanjain2
8 Replies

8. Shell Programming and Scripting

sed substitute command -- need help

I am trying to do what I thought should be a simple substitution, but I can't get it to work. File: Desire output: I thought I'd start with a sed command to remove the part of the header line preceding the string "comp", then go on to remove the suffix of the target string (e.g. ":3-509(-)"),... (3 Replies)
Discussion started by: pathunkathunk
3 Replies

9. Shell Programming and Scripting

How can I modify my script to include or substitute missing data?

Let me start off by saying I am a self taught sometimes scripter so what you will see below won't be pretty. I have created a script to parse through a file with a large amount of data and simply pull out what I need. In doing this I create several files and then paste them together in order to... (2 Replies)
Discussion started by: fsanchez
2 Replies

10. UNIX for Beginners Questions & Answers

Substitute a character with sed

hi all, i'd like to modify a file with sed , i want to substuite a char "-" with "/" how can i do this? Thanks for all regards Francesco (16 Replies)
Discussion started by: Francesco_IT
16 Replies
getenv(3)						     Library Functions Manual							 getenv(3)

Name
       getenv, setenv, unsetenv  - manipulate environment variables

Syntax
       char *getenv(name)
       char *name;

       setenv(name, value, overwrite)
       char *name, value;
       int overwrite;

       void unsetenv(name)
       char *name;

Description
       The  subroutine	searches  the  environment  list for a string of the form name = value and returns a pointer to the string value if such a
       string is present, otherwise returns the value 0 (NULL).  For further information, see

       The subroutine searches the environment list in the same manner as If the string name is not found, a string  of  the  form  name=value	is
       added  to  the environment.  If it is found, and overwrite is non-zero, its value is changed to value.  The subroutine returns 0 on success
       and -1 on failure, where failure is caused by an inability to allocate space for the environment.

       The subroutine removes all occurrences of the string name from the environment.	There is no library provision for completely removing  the
       current environment.  It is suggested that the following code be used to do so.
       static char     *envinit[1];
       extern char     **environ;
       environ = envinit;
       All of these routines permit, but do not require, a trailing equals sign (=) on name or a leading equals sign on value.

See Also
	csh(1), sh(1), execve(2), putenv(3), environ(7)

																	 getenv(3)
All times are GMT -4. The time now is 12:46 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy