The first version of this script used cut and other non-Bash-builtins, frequently, which made it nice and zippy with little more than average processor load in GNOME Terminal but, predictably, slow as a sloth on Valium and heavy on the CPU in Cygwin.
I decided I wanted it to work faster, whatever it was run in.
Recently, I came across a line -- you might call it a command 'pair' -- in another script
for which I got help either here or on LQ. I've applied it to other scripts, and I've seen, yet again, the difference in speed a builtin often makes over an external binary. All those scripts had something in common, however: the data they read in was separated by a single delimiter, a colon or a comma, but not one of the former and several of the latter, as in my example above.
Re-working it with as much as I can get my mind around in terms of the 'read' and 'exec' commands, with only the most modest looking about on coder/scripter bulletin-board sites etc., I still can't get it to split the data in the $tags variable.
It looks like my approach is all wrong. So what would be a more useful way to go about it, keeping in mind that I want to employ more (all, if possible) builtins and stay away from "/bin" externals.
You might say I kind'a bailed. I decided since I was formatting the data to work with the older (and in Cygwin, slower) script, whether or not the lines had one delimiter or two didn't matter so much as getting the processing time down with the built-ins.
So I tried a similar string to the example I gave in my OP, removed one 'while IFS="" ' inside another while/do/done loop (with which I'd been trying to break up the $tags variable), and on the single delimiter -- this time a comma, though it could have just as easily been a colon or a carat (^) -- it ran as fast in Cygwin as the other one has always done in GNOME Terminal, give or take a few dozen ticks.
Which is OK with me.
The command string you suggested won't go to waste, though. I've found another old script that is also written to read text data delimited by two different bits of punctuation. I've got a slightly-faster version worked up now, but I think it could be made even zippier. I'll C&P your line and see if I can use it with this other script.
Hello experts, I need help writing individual files from a data matrix, with each new file being written every time there is a blank line:
From this
cat file.txt
col1 col2 col3
6661 7771 8881
6661 7771 8881
6661 7771 8881
col1 col2 col3
3451 2221 1221... (6 Replies)
Hello everyone!
I'm trying to make the below file1 look like file2, can anyone help?
Basically I just hit backspace on every line that starts with a number.
Thanks!
file1:
THIS#IS-IT1
4
THIS#IS-IT2
3
THIS#IS-IT3
2
THIS#IS-IT4
1
Result > file2: (4 Replies)
So I'm in a Unix class and our assignment was to go into VI and write a script to make this file tree. At the end of it, I'd like it to echo "This is the file tree you've created" then a line break, then . But I'm not sure as to who to do it. Is there a way for when I run it (./filesystem), the... (4 Replies)
Hi,
We had an issue with one file. Each line in the file is a record in which there will be 6 fields each separated by ; Problem is some lines are broken into pieces.
like
a;b;
c;
d;
e;f
instead of a;b;c;d;e;f
I have filtered out all the broken lines from the original file and wrote to... (6 Replies)
Dear All,
thanks in advance
input file
410530AAANNNNNAAA410530JJJJJJYYYY410530PPPPPAAAAAA...........
I want output like
410530AAANNNNNAAA
410530JJJJJJYYYY
410530PPPPPAAAAAA
Thanks (10 Replies)
I am using the while-loop to read a file.
The file has lines with null-terminated strings (words, actually.)
What I have by that reading - just a first word up to '\0'!
I need to have whole string up to 'new line' - (LF, 10#10, 16#A)
What I am doing wrong?
#make file 'grb' with... (6 Replies)
Hi gurus, I have the following part of code which I am using for treating input
#!/bin/bash
while ]; do
arg=$1; shift
case $arg in
-u)
users="$1"
shift
;;
-g)
groups="$1"
shift
;;
... (4 Replies)
This is the code:
while test 1 -eq 1
do
read a
$a
if test $a = stop
then
break
fi
done
I read a command on every loop an execute it.
I check if the string equals the word stop to end the loop,but it say that I gave too many arguments to test.
For example echo hello.
Now the... (1 Reply)
hi All,
Have a doubt in ksh..Am not familiar with arrays but i have tried out a script..
plzzzzz correct me with the script
My i/p File is:
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(Host = 192.168.2.2)
(Port = 1525)
)
)
(CONNECT_DATA = (SID = TESTDB1)
)
)
... (7 Replies)