ksh String Manipulation - removing variables from within a variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting ksh String Manipulation - removing variables from within a variable
# 15  
Old 02-01-2019
I like these ones in particular:


Code:
echo ${array[@]//g}
john paul eore rino
echo ${array[@]//[og]}
jhn paul ere rin

This User Gave Thanks to RudiC For This Post:
# 16  
Old 02-01-2019
Back to question#1.
If you really want simple strings, you need nested for loops.
Still things look easy if you hide the complexity in a function.
Code:
#!/bin/sh
NAMES_without(){
  for i in $NAMES
  do
    for j
    do
      [ "$i" = "$j" ] && continue 2
    done
    echo "$i"
  done
}

NAMES="John
Paul
George
Ringo"
EXCLUDE_NAMES="Ringo
Paul"
NAMES=$(NAMES_without $EXCLUDE_NAMES)
echo "$NAMES"

Output is
Code:
John
George

As you see, I have taken a newline as separator. Often this is handier than a space.
# 17  
Old 02-01-2019
@MadeInGermany: Why should multiple / repeated "Pattern Substitution" not work on simple strings? No loop needed. With the variables as defined in post #16 (and falling back to bash and it's extglob / extended pattern matching):


Code:
echo "${NAMES//@(${EXCLUDE_NAMES//$'\n'/|})}"
John

George

You may apply another expansion to remove duplicate separators.
This User Gave Thanks to RudiC For This Post:
# 18  
Old 02-04-2019
@RudiC, that seems to only work in an interactive shell.?
# 19  
Old 02-04-2019
@MadeInGermany: no, works as well in a shell script. Don't forget to
Code:
shopt -s extglob

prior to executing the (complex) expansion.


Code:
echo $BASH_VERSION 
4.4.19(1)-release

This User Gave Thanks to RudiC For This Post:
# 20  
Old 02-04-2019
Right, I forgot to set the extglob!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Variable string manipulation

Hi, I have a variable with grep output like this: WORDS=$(grep -r -c -i -E "palindrom" /"$DIRECTORY"/) so "echo "$WORDS"" could be: //directory/file1.txt:0 //directory/file2.txt:0 //directory/file3.txt:3 //directory/file4.txt:1 //directory/file5.txt:0 I need to "sed" my variable... (3 Replies)
Discussion started by: Hornys
3 Replies

2. Shell Programming and Scripting

How to convert string(variable) into date( epoch) in ksh on HPUX machine?

Hi all, I have used a bash script which ultimately converts a string into date using date --date option: DATE=$DATE" "$TIME" "`date +%Y` //concatenating 2 strings TMRW_DATE=`date --date="$DATE" +"%s"` //applying date command on string and getting the unixtime Please use code tags... (7 Replies)
Discussion started by: Rashu123
7 Replies

3. Shell Programming and Scripting

String manipulation using ksh script

Hi, I need to convert string "(joe.smith" into "joe_smith" i.e. I need to remove the leading opening brace '(' and replace the dot '.' with an under score '_' can anyone suggest a one liner ksh script or unix command for this please (3 Replies)
Discussion started by: sdj
3 Replies

4. Shell Programming and Scripting

Ksh in Linux Removing: "\0" From String

Hi All, I am facing a problem and I am not able to solve it. I have already searched google, but nothing (maybe I am not using the correct key words). As a database query result, I have a file like below: fmv:/home/fmv/tmp>cat TestBackRef.txt /^TEST\(\{4\}\)X\{12\}Y\.txt$/\0#\1/#Test... (2 Replies)
Discussion started by: felipe.vinturin
2 Replies

5. Shell Programming and Scripting

Bash:How to split one string variable in two variables?

Hello, I have a paramter $param consisting just of two literals and want to split it into two parameters, so I can combine it to a new parameter <char1><string><char2>, but the following code didn't work: tmp_PARAM_1=cut -c1 $PARAM tmp_PARAM_2=cut -c2 $PARAM... (2 Replies)
Discussion started by: ABE2202
2 Replies

6. Shell Programming and Scripting

Bash string variable manipulation

In a bash script I've set a variable that is the directory name of where an executable lives. the_dir=`dirname $which myscript` which equates to something like "/path/to/dir/bin" I need to cut that down to remove the "bin" so I now have "/path/to/dir/". This sounds easy but as a... (2 Replies)
Discussion started by: Witty
2 Replies

7. Shell Programming and Scripting

string manipulation in ksh

Hi all, I'm trying to extract the name of a script that is being run with a full path. i.e. if the script name is /some/where/path/script_name.ksh I'd like to extract only: script_name i know that it is possible to do so in two phases: echo "${0##*/}" will give me script_name.ksh and... (4 Replies)
Discussion started by: iceman
4 Replies

8. UNIX for Dummies Questions & Answers

String manipulation using ksh

I have a UNIX shell where: LEVEL=dev SITE=here and WHEREIAM=/tmp/$SITE/location/$LEVEL I want to echo $WHEREIAM in such a way that I get it back with all the environment variables resolved (/tmp/here/location/dev). This command will be used in a shell script. (5 Replies)
Discussion started by: zambo
5 Replies

9. Shell Programming and Scripting

KSH split string into variables

Hello, I am an intermediate scripter. I can usually find and adapt what I need by searching through previous postings, but I'm stumped. I have a string with the format "{Name1 Release1 Type1 Parent1} {Name2 Release2 Type2 Parent2}". It is being passed as an argument into a ksh script. I need to... (5 Replies)
Discussion started by: drd_2b
5 Replies

10. UNIX for Dummies Questions & Answers

extract from string variable into new variables

I have a variable which consists of a string like this: 001 aaabc 44 a bbb12 How do I extract each substring, delimited by the spaces, into new variables - one for each substring? eg var1 will be 001, var2 will be aaabc, var3 will be 44, var4 will be a, etc? I've come up with this:... (2 Replies)
Discussion started by: Sniper Pixie
2 Replies
Login or Register to Ask a Question