Sponsored Content
Top Forums Shell Programming and Scripting Replace String without using sed Post 303024636 by Scrutinizer on Saturday 13th of October 2018 06:54:21 AM
Old 10-13-2018
Nice trick Smilie , but it is not much different from or offers advantages over simply creating a new file and then renaming it to the old file.
Code:
sed "s/$HIST_DATE/$INC_DATE/" "${fn}" > "${fn}.tmp" && mv -- "${fn}.tmp" "${fn}"


--
What the trick with the file descriptor does is:
  1. point a file descriptor (fd) to the inode that is pointed to by the file
  2. remove the filename, but leave the inode (since it is still pointed to by the fd)
  3. create a new file (and thus a new inode) using the old filename
  4. operate sed reading from the fd (the old file) and writing to the new file
  5. close fd and thus remove the old file inode

It is more risky, since if anything goes wrong with writing to the new file, the old file still gets deleted.

Last edited by Scrutinizer; 10-13-2018 at 08:00 AM..
 

10 More Discussions You Might Find Interesting

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

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

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

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

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

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

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

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

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

10. 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
clri(1M)						  System Administration Commands						  clri(1M)

NAME
clri, dcopy - clear inode SYNOPSIS
clri [-F FSType] [-V] special i-number dcopy [-F FSType] [-V] special i-number DESCRIPTION
clri writes zeros on the inodes with the decimal i-number on the file system stored on special. After clri, any blocks in the affected file show up as missing in an fsck(1M) of special. Read and write permission is required on the specified file system device. The inode becomes allocatable. The primary purpose of this routine is to remove a file that for some reason appears in no directory. If it is used to zap an inode that does appear in a directory, care should be taken to track down the entry and remove it. Otherwise, when the inode is reallocated to some new file, the old entry will still point to that file. At that point, removing the old entry will destroy the new file. The new entry will again point to an unallocated inode, so the whole cycle is likely to be repeated again and again. dcopy is a symbolic link to clri. OPTIONS
-F FSType Specify the FSType on which to operate. The FSType should either be specified here or be determinable from /etc/vfstab by matching special with an entry in the table, or by consulting /etc/default/fs. -V Echo the complete command line, but do not execute the command. The command line is generated by using the options and arguments provided by the user and adding to them information derived from /etc/vfstab. This option should be used to ver- ify and validate the command line. USAGE
See largefile(5) for the description of the behavior of clri and dcopy when encountering files greater than or equal to 2 Gbyte ( 2 **31 bytes). FILES
/etc/default/fs Default local file system type /etc/vfstab List of default parameters for each file system ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Availability |SUNWcsu | +-----------------------------+-----------------------------+ SEE ALSO
fsck(1M), vfstab(4), attributes(5), largefile(5) NOTES
This command might not be supported for all FSTypes. SunOS 5.10 16 Sep 1996 clri(1M)
All times are GMT -4. The time now is 02:22 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy