Visit Our UNIX and Linux User Community


Replace String without using sed


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replace String without using sed
# 1  
Old 10-09-2018
Replace String without using sed

Hi Team,

I have a file and need to replace string. Out of 20 rows, there is one row given below

Code:
$Paramsoqlfilter=Systemmodstamp > 1900-01-01T00:00:00.000Z

in a Shell Script, I have a variable
Code:
HIST_DATE="1900-01-01T00:00:00.000Z"
INC_DATE="2018-10-04T09:18:43.000Z"

Now I need to replace HIST_DATE with INC_DATE.

That mean, the string in a file should get INC_DATE like below

Code:
$Paramsoqlfilter=Systemmodstamp > 2018-10-04T09:18:43.000Z

Issue: sed -i not available. I'm suing korn shell

Can someone please help me?
# 2  
Old 10-09-2018
you don't need to have '-i' enabled sed to edit the file.
what's your file look like?
what do you have so far to edit the file so far (with or without sed)?
# 3  
Old 10-09-2018
Code:
HIST_DATE="1900-01-01T00:00:00.000Z"
INC_DATE="2018-10-04T09:18:43.000Z"

ex input_file << EDIT
1,$ s/$HIST_DATE/$INC_DATE/g
w!
EDIT

This User Gave Thanks to rdrtx1 For This Post:
# 4  
Old 10-09-2018
You can also use perl, which should be pre-installed on any *nix disto:

Code:
perl -p -i -e 's/$HIST_DATE/$INC_DATE/g' /path/to/file


That's may be easier to commit to memory if you're used to sed -i.
# 5  
Old 10-09-2018
Shell only:
Code:
while read -r line
do
  case $line in 
    (*"${HIST_DATE}") 
      line=${line#"${HIST_DATE}"}${INC_DATE}
    esac
  printf "%s\n" "$line"
done < file > file.new


--
bash / ksh93 / zsh:
Code:
while read -r line; do
  printf "%s\n" "${line/"${HIST_DATE}"/"${INC_DATE}"}"
done < file > file.new



----
Quote:
Originally Posted by Azrael
You can also use perl, which should be pre-installed on any *nix disto:

Code:
perl -p -i -e 's/$HIST_DATE/$INC_DATE/g' /path/to/file


That's may be easier to commit to memory if you're used to sed -i.
You would need to use double quotes for this to work..

Last edited by Scrutinizer; 10-10-2018 at 12:13 AM.. Reason: Added -r to read commands
# 6  
Old 10-11-2018
Quote:
You would need to use double quotes for this to work..
Maybe for the variable, but for straight substitution single quotes work just fine:

Code:
$ cat test
OK
$ perl -p -i -e 's/OK/NOTOK/' test
$ cat test
NOTOK

# 7  
Old 10-11-2018
Hi, with sed without -i :
file to modify:
Code:
$ cat /tmp/file.tst 
$Paramsoqlfilter=Systemmodstamp > 1900-01-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-01-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-01-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-02-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-02-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-02-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-02-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-01-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-02-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-02-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-02-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-02-01T00:00:00.000Z

Code:
$ HIST_DATE="1900-01-01T00:00:00.000Z"
$ INC_DATE="2018-10-04T09:18:43.000Z"
$ exec 3</tmp/file.tst 
$ rm /tmp/file.tst 
$ sed -e "s/${HIST_DATE}/$INC_DATE/" <&3 >/tmp/file.tst
$ exec 3<&-

Code:
$ cat /tmp/file.tst 
$Paramsoqlfilter=Systemmodstamp > 2018-10-04T09:18:43.000Z
$Paramsoqlfilter=Systemmodstamp > 2018-10-04T09:18:43.000Z
$Paramsoqlfilter=Systemmodstamp > 2018-10-04T09:18:43.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-02-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-02-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-02-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-02-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 2018-10-04T09:18:43.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-02-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-02-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-02-01T00:00:00.000Z
$Paramsoqlfilter=Systemmodstamp > 1900-02-01T00:00:00.000Z

Regards.
This User Gave Thanks to disedorgue For This Post:

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Using sed to replace string

Hello guys, I'm working in a cellular company and i'm trying to do a script to run some commands automaticlly. I'm using Solaris version :SunOS pk-ercuas4 5.10 in my work. I've a file that creates by script named test1.mos that that look like: confb+ gsg+ lt all $date = `date... (1 Reply)
Discussion started by: oferg
1 Replies

2. 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

3. Shell Programming and Scripting

sed String Replace

I have this file and variable on my machine $cat /tmp/disk.tmp check_disk.pl -H localhost -D ARG1 -w 75 -c 90 $echo $_ARG1 /,/opt,/tmp,/usr,/var,/boot,/dev/shm how do I replace the string ARG1 in my file (disk.tmp) with the value of my variable _ARG1 and placing them inside quotes while... (4 Replies)
Discussion started by: thursday_g0ne
4 Replies

4. 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

5. Shell Programming and Scripting

replace (sed?) a string in file with multiple lines (string) from variable

Can someone tell me how I can do this? e.g: a=$(echo -e wert trewt ertert ertert ertert erttert erterte rterter tertertert ert) How do i replace the STRING with $a? I try this: sed -i 's/STRING/'"$a"'/g' filename.ext but this don' t work (2 Replies)
Discussion started by: jforce
2 Replies

6. UNIX for Dummies Questions & Answers

sed replace string

Hi, How can i execute the below. I want to replace value1 string value with new/new/newString value sed 's/value1/new/new/newString'/' file.txt ~Vinodh' Kumar (2 Replies)
Discussion started by: vino_hymi
2 Replies

7. Shell Programming and Scripting

How to use sed to replace the a string in the same file using sed?

How do i replace a string using sed into the same file without creating a intermediate file? (7 Replies)
Discussion started by: gomes1333
7 Replies

8. Shell Programming and Scripting

Using sed to replace a string in file with a string in a variable that contains spaces

Hi, i call my shell like: my_shell "my project name" my script: #!/bin/bash -vx projectname=$1 sed s/'PROJECT_NAME ='/'PROJECT_NAME = '$projectname/ <test_config_doxy >temp cp temp test_config_doxy the following error occurres: sed s/'PROJECT_NAME ... (2 Replies)
Discussion started by: vivelafete
2 Replies

9. Shell Programming and Scripting

sed: replace string with another string (with spaces)

Hi I have an XML file with strings XABCD, XEFGHX and XIJKLX. I would like to replace XABCDX with "This is the first string", XEFGHX with "This is the second string" and XIJKLX with "This is the third string". What is the best way to implement this? Should I have a file with the data that is... (4 Replies)
Discussion started by: zmfcat1
4 Replies

10. UNIX for Dummies Questions & Answers

Is it possible to replace more the 1 string with one SED?

i want to replace two phrases in text file originalstringA.1. blah blah.... originalstringB.1. got this code so far: #variables IP=$1 NO=$2 FS=$3 IS=$4 NN=1 #echo variables echo '' echo $IP echo $NO echo $FS echo $IS (1 Reply)
Discussion started by: tuathan
1 Replies

Featured Tech Videos