ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
And, by the way, it conceptually is very similar to the ways it can be done in Perl - the same entities are involved. So I'm surprised you are asking it - you have already read Perl documentation on regular expressions, haven't you ?
MTK358, if I remember correctly, the thing you want to do with 'awk' is very close to what you once wanted to do with Perl - I mean that OO "C" attempt of yours. I think in that case you meant to replace string middle leaving the beginning and the end intact. This time the beginning and the end are just single characters, but other than that it's the same task, isn't it ?
MTK;
Please count to ten before continuing in this thread. What I see is a terse comment from Sergei, followed by several helpful comments. It would have been much better to respond to the latter.
Regardless, do not post anything else here except a discussion of the substance of your problem and the suggestions so far.
And, by the way, it conceptually is very similar to the ways it can be done in Perl - the same entities are involved. So I'm surprised you are asking it - you have already read Perl documentation on regular expressions, haven't you ?
I didn't even think that this has anything to do with regular expressions.
I just asked for an algorithm, or some hints on how to make one.
I noticed many times before that he thinks I don't read anything. There is a difference between not reading something and reading something that you have no clue about. It's as if he doesn't understand the concept of not understanding.
It also seems to me that he looks down upon me for being stupid for doing something before I fully understand it. But how else do you learn?
For example this little comment that really hurt me:
Quote:
Originally Posted by Sergei Steshenko
Just marvelous. You start a server and do not know where its log files are ? And how are you going to debug anything at all ?
Let me tell you something, Sergei! I was just doing that for fun.
I am not working in a big corporation setting up a huge corporate server without knowing where log files are.
I am sitting relaxed at home at my desktop, setting up a server just for the sake of learning how servers work, without any real intention of serving a public website, and to have a platform to learn PHP on.
Also, I find your terse language difficult to understand, and to a certain degree I find it condescending.
And one last thing: I just can't stand those cryptic puzzles and weird ways of doing things that so many members disagree on.
You are the polar opposite of LQ's fun, helpful atmosphere.
So if you want to help me, please understand these concepts first:
Not understanding
Doing stuff for fun
Not being so serious
Google searches that bring no relavent results
Not forcing me to do stuff "your way", which is different for everyone else's way.
If you disagree even slightly, I kindly ask you not to ever reply to my threads again. I would rather not get any replies at all than get a reply from you.
Not a direct answer to your question, but an alternative:
While it's quite easy in gawk, I wanted to see if I could do it using bash. Here's how I did it:
Code:
#!/bin/bash
# Scramble all characters between the first an last character in each input token
#
scramble ()
{
declare -a inside
local first last i
if [ ${#1} -le 3 ]
then
# If here, nothing to do
scramble="${1}"
else
# We have something to do . . .
first="${1:0:1}"
last="${1:$((-1)):1}"
i=1
while [[ "${i}" -lt $((${#1}-1)) ]]
do
inside[${i}]=${1:$((i)):1}
i=$((${i}+1))
done
scramble="${first}"
for i in $(echo -n $(shuf -e "${inside[@]}"))
do
scramble="${scramble}"${i}
done
scramble="${scramble}""${last}"
fi
}
for ok in "${@}"
do
scramble "${ok}"
echo -n "${scramble}"" "
done
echo
and here's how the output looks:
Code:
$ ./scramble this is a test
tihs is a test
$ ./scramble this is a test
this is a test
$ ./scramble this is a test
this is a test
$ ./scramble this is a test
tihs is a tset
Note the use of the shuf function to do the actual permutation. While a permutation function is fairly easy to write, I see no need to "reinvent the wheel."
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.