just another question though...when I have the choice of solving something like this using awk or sed, which one should i choose and why? is on better than the other in terms of performance?
ou might be interested in this post by me, which was written somewhat with tongue-in-cheek.
To cut a long story short: When you need to work context-oriented *) use awk, as doing this in sed is a nightmare. As long as speed is a consideration try to use sed as often as possible as it is much faster than awk. Something like
print - "$string" | awk '{print $4}'
is wasting a mighty tool on trivial problems - use sed and/or cut for this.
Still "wasting" is not always the same. Compare the above line to:
Same line, quite different effect as the line is not executed once but a 100000 times. The effect of changing from awk to sed/cut will probably be negligable in the first example but will probably be very big in the second one.
Or, other aspect:
In this case it will depend on how big "file" is: the loop will get executed once for every line of the input file. If this is 5 lines long it won't matter, if it is a database dump with millions of lines it will make a big difference.
As a general consideration: try to learn both tools equally well. Both have their merits and avoid getting in a situation where "the only tool you have is a hammer and therefore everything starts looking like nail".
I hope this helps.
bakunin
*) "Context-oriented" means: problems like "get all numbers in a file totalling them" or "get the content of a certain line and apply changes to the other lines following it depending on this content" or something like that.
Solaris, ksh
I have a .csv file I am trying to clean up before loading into the database. The file contains comma separated columns that have leading spaces which I need to remove. The trouble is, some columns that should not be touched are strings which happen to have the same pattern in them. ... (4 Replies)
Hello,
I want to delete all lines with given string in file1 and the string val is dynamic.
Can this be done using sed command.
Sample:
vars="test twinning yellow"
for i in $vars
do
grep $i file1
if
then
echo "Do Nothing"
else
sed `/$i/d` file1
fi
done
Using the above... (5 Replies)
Hello,
I have this sentence :Pattern1 Pattern2 Pattern3 Pattern4-which-contains-HELLO-string-and-other-stuff-and-second-HELLO-and-third-HELLO
I want to delete everything between the 3rd tab (\t) and the FIRST pattern "HELLO" of the line.
Result expected is : Pattern1 ... (7 Replies)
Hi Please help me to refine my syntax. I want to delete the excess characters from the out put below.
-bash-3.00$ top -b -n2 -d 00.20 |grep Cpu|tail -1 | awk -F ":" '{ print $2 }' | cut -d, -f1
4.4% us
now i want to delete the % and us. How wil i do that to make it just 4.4.
Thanks (7 Replies)
Hi,
I need to delete all text between "|" delimiters. The line in text file typically looks like this:
1014182| 13728 -rw-r--r-- 1 imac1 staff 7026127 2 okt 2010 |/Users/imac1/Music/iTunes/iTunes Media/Music/Various Artists/We Are the World_ U.S.A. for Africa/01 We Are the World.mp3... (2 Replies)
Hi
I would like to batch delete the "note" entry from bib files. The start would be defined by "note ={" and the end by "}." (see example bib entry below).
I tried the following command which does not have any effect:
cat input.bib| sed -e 's/note = {.*}.//' > output.bib
Any help would... (2 Replies)
Hi i have a file which contains 2 lines, line 1 is static data. line 2 is a very large string(over 3000char or much more). in that string are tags which i want to delete.
e.g.
<order1>123</order1><tag1>data</tag1><new>1</new><order2>124</order2><tag1>data</tag1>
all one one line. now i... (5 Replies)
Hi,
I have file which has the following content...
GOOD MORNING
**********WARNING**********
when it kicks from the kickstart, sshd daemon should start at last.
(WHEN KICKING ITSELF, NOT AFTER KICKING).
/etc/rc3.d/S55sshd ( run level specification for sshd is 55, now I would want to... (4 Replies)
file1 contains the following data
sssssssssss
firstline
secondline pppppppppp
ssssssssss
Using sed comamnd i am trying to delete firtsline secondline.
so, output should be
sssssssssss
pppppppppp
ssssssssss
I tried in the following the way, but it is not working.
sed ... (9 Replies)
Hi all!
Here is my problem : I have a string like the following :
20030613170404;BAN_CAV ; starting script Loader.sh on ; 13/06/2003 at ; 17;04;03
I want to eraze all characters located after "Loader.sh", because there are unuseful.
I tried to use sed...but it didnt work....i guess i... (1 Reply)