To be honest, i dislike perl: IMHO it is like a Swiss Army pocket knife: 756 functions - and not one of them in a usable shape.*)
My suggestion is to do it with simple shell commands. UNIX is built with a large toolbox of specialised programs, which - unlike perl - serve only one purpose, but serve this purpose excellently. Use some glue (read: shell scripts) and you can build anything you will ever need and then some.
After this long intro, here is how to do it in shell:
Let us first tackle the removal of a line in a given file. We use "sed" for this and it is really simple:
will remove every line in "/path/to/file", which fits the regexp and output the result to "/path/to/output". Fill in the appropriate regexp (in your case a fixed line) and you are done.
Some characters with a special meaning to "sed" got a backslash to let the utility know they are not meant in their special meaning but literal. The rest is straightforward. Test this on a single file and proceed once the results are to your liking.
The next step is to do this for all files recursively. There is a special command for this, which is "find" (i suggest reading its man page, it is by far the most effective "file manager" there is. If you ever have tried to do something with Nautilus, Finder, Norton Commander, etc. - "find" outperforms and outpaces these by some orders of magnitude.)
Let us list all the files you want to change with find:
Again, test and eventually tune it to your needs, proceed once you are satisfied with the results.
Last step: combine the two solutions: we use a simple loop for this:
Voilą!
OK, there are two details you certainly have detected:
Why did i not use the "-i" flag your "sed" might have (like your perl, which also has it) but used a temp file instead and why did i not use the "-exec" clause, which would have spared me the loop, like this:
Answer: the "-i"-flag is problematic, as i have explained here and i try to avoid it. Second, i could have written the two lines necessary to change a single file as a script and called it via "find"s "-exec"-clause, but i saw little gain in this, so i put everything into one script.
I hope this helps.
bakunin
_______
*) try using the screwdriver to actually repair something and you will know what i mean.
I get a text file with 70+ columns (seperated by Tab) and about 10000 rows. The 58th Column is all numbers. But sometimes 58th columns has "/xxx=##" after the numeric data. I want to truncate this string using the script. Any Ideas...:confused: (3 Replies)
Hi all,
I have a script that scan files, find old templet and replace it with new one.
#!/bin/ksh
file_name=$1
old_templet=$2
new_templet=$3
# Loop through every file like this
for file in file_name
do
cat $file | sed "s/old_templet/new_templet/g" > $file.new
#do a global searce and... (8 Replies)
Looking for a way using sed/awk/perl to replace port numbers in a file with an incrementing number. The original file looks like...
Host cmg-iqdrw3p4
LocalForward *:9043 localhost:9043
Host cmg-iqdro3p3a
LocalForward *:10000 localhost:10000
Host cmg-iqdro3p3b
LocalForward... (2 Replies)
Is this something SED would be used for or can AWK do it?
I have a string that I would like to chop bits out of and re-arrange some of the rest.
Basically I want to change this:
<log4j:event logger="webserver" timestamp="1240110840109" time="Sun Apr 19 04:14:00 BST 2009" level="INFO"... (4 Replies)
Trying to create a script/executable to replace "abc" text string in "myfile.htm" with input from a pop-up field. For example, launch this thing and a prompt is popped up asking the user to input what "abc" should be replaced with, then it inserts what the user inputs in place of abc in the... (3 Replies)
find . -type f -name "*.sql" -print|xargs perl -i -pe 's/pattern/replaced/g'
this is simple logic to find and replace in multiple files & folders
Hope this helps.
Thanks
Zaheer (0 Replies)
Hi All,
I have a unix shell script file as below.
My task is
a)to replace 248 to 350 and need to create a new file as BW3_350.sh
b)to replace 248 to 380 and need to create a new file as BW3_380.sh
c)to replace 248 to 320 and need to create a new file as BW3_320.sh
there is no... (6 Replies)
I am making an eBook.
I am editing the html in BBedit.
I need to replace all <p class="s5"> with just a <p>.
How do I write this for GREP?
Thank you,
Abby (5 Replies)
Hi
I am looking to rename the contents of this dir, each one with a new timestamp, interval of a second for each so it the existing format is on lhs and what I want is to rename each of these to what is on rhs..hopefully it nake sense
CDR.20060505.150006.gb CDR.20121211.191500.gb... (3 Replies)
I have text with upper and lower case words. I want to find something and replace it with something new. But it should match the case - Meaning - it should replace old upper cased word with NEW upper case word and lower with lower.
example:
this text is very simple TEXT.
now I want to replace... (5 Replies)