Sponsored Content
Full Discussion: Bash Parameter Expansion
Top Forums Shell Programming and Scripting Bash Parameter Expansion Post 303013629 by bakunin on Saturday 24th of February 2018 03:12:30 PM
Old 02-24-2018
Quote:
Originally Posted by kristinu
Is there a way to get the filename without the directory and without the extension, using parameter expansion to get

Code:
  iv.hpac..hhz.d.2016.250.070018

Yes, but it would be cumbersome and plain ugly. Writing scripts (i suppose you need it in a script) is all about clarity and making it easy to understand what is done, therefore you should do it in two steps using the expansions you already found. I would write it like this:

Code:
text="${text##*/}"      # cut off the path
text="${text%.*}"       # cut off the extension

For completeness' (but again: don't really do it! This is just to show off my prowess in writing incomprehensible code! ;-) ) sake: you can use an expansion inside another expansion as a pattern. For instance, this cuts off the first character in a string, notice the nested expansion:

Code:
chLine="abcdefghi"

while [ -n "$chLine" ] ; do
     chChar="${chLine%${chLine#?}}"        # nested expansion!!
     chLine="${chLine#?}"

     echo char is: \"$chChar\"
     echo line is: \"$chLine\"
done

Using this device you could do what you want. Don't!

I hope this helps.

bakunin
These 2 Users Gave Thanks to bakunin For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

removing html tags via parameter expansion

Hi all- I have a variable that contains a web page: echo $STUFF <html> <head> <title>my page</title></head> <body> blah blah etc.. Can I use the shell's parameter expansion abilities to remove just the tags? I thought that FIXHTML=${STUFF//<*>/} might do it, but it didn't seem to... (2 Replies)
Discussion started by: rev66
2 Replies

2. Shell Programming and Scripting

Need help with parameter expansion

Say you have this numeric variable that can be set by the user but you never want it to leave a certain range when it gets printed. How could you use parameter expansion such that it will never expand outside of that boundary? Thanks ---------- Post updated at 11:09 PM ---------- Previous update... (3 Replies)
Discussion started by: stevenswj
3 Replies

3. Shell Programming and Scripting

Bash parameter expansion from a config file

Hi - I am trying to do a simple config file with known variable names in it, e.g.: contents of config file a.conf: -a -b $work -c $host simplified contents of bash script file: work='trunk' host='alaska' opts=$(tr '\n' ' ' < a.conf) opts="$opts $*" mycommand $opts arg1 arg2 The... (3 Replies)
Discussion started by: mrengert
3 Replies

4. Shell Programming and Scripting

Parameter expansion not working for all strings...

I'm trying to write a script that parses my music collection and hard link some filenames that my media player doesn't like to other names. To do this I need to extract the name and remove alla non ASCII characters from that and do a cp -l with the result. Problem is this: 22:16:58 $... (8 Replies)
Discussion started by: refuser
8 Replies

5. UNIX for Dummies Questions & Answers

Parameter Expansion with regular expression

Hello experts, I am exploring parameter expansion, and trying to cut the fields in a URL. Following is the requirement: I have // abc.nnt /dir1/dir2/dir3/dir4/somefile.java What i need to get is the path after dir3, and dir3 will be passed. output that i need is... (1 Reply)
Discussion started by: gjarms
1 Replies

6. Shell Programming and Scripting

Bash expansion

Hello. I cannot write a command without using eval. Any help is welcome Note 1 : What does the function SOMETHING has no importance. Note 2 : What does the command find has no importance. It is an expansion variable problem : where to put or or or anythings else What works (FILTRE_1... (8 Replies)
Discussion started by: jcdole
8 Replies

7. Shell Programming and Scripting

Bash Parameter Expansion

#!/bin/bash SNMPW='/usr/bin/snmpwalk' while read h i do loc=$($SNMPW -v3 -u 'Myusername' -l authPriv -a SHA -A 'Password1' -x AES -X 'Password2' $i sysLocation.0 2>/dev/null) loc=${loc:-" is not snmpable."} loc=${loc##*: } loc=${loc//,/} echo "$i,$h,$loc" done < $1 My question is ... ... (1 Reply)
Discussion started by: sumguy
1 Replies

8. Shell Programming and Scripting

Bash : More parameter expansion and IFS

I am trying to become more fluent with the interworking of bash and minimize the number of external calls. Sample Data. This will be the response of the snmp query. SNMPv2-MIB::sysName.0 = STRING: SomeHostName SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.1745... (5 Replies)
Discussion started by: sumguy
5 Replies

9. Shell Programming and Scripting

Bash : Parameter expansion ${var:-file*}

Example data $ ls *somehost* 10.10.10.10_somehost1.xyz.com.log 11.11.11.11_somehost2.xyz.com.log #!/bin/bash #FILES="*.log" FILES=${FILES:-*.log} for x in $FILES do ip="${x%%_*}" # isolate IP address x="${x##*_}" # isolate hostname hnam="${x%.*}" # Remove the ".log"... (2 Replies)
Discussion started by: popeye
2 Replies

10. Shell Programming and Scripting

Use parameter expansion over a parameter expansion in bash.

Hello All, Could you please do help me here as I would like to perform parameter expansion in shell over a parameter expansion. Let's say I have following variable. path="/var/talend/nat/cdc" Now to get only nat I could do following. path1="${path%/*}" path1="${path1##*/}" Here... (8 Replies)
Discussion started by: RavinderSingh13
8 Replies
EREG_REPLACE(3) 							 1							   EREG_REPLACE(3)

ereg_replace - Replace regular expression

SYNOPSIS
string ereg_replace (string $pattern, string $replacement, string $string) DESCRIPTION
This function scans $string for matches to $pattern, then replaces the matched text with $replacement. Warning This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged. PARAMETERS
o $pattern - A POSIX extended regular expression. o $replacement - If $pattern contains parenthesized substrings, $replacement may contain substrings of the form digit, which will be replaced by the text matching the digit'th parenthesized substring; will produce the entire contents of string. Up to nine substrings may be used. Parentheses may be nested, in which case they are counted by the opening parenthesis. o $string - The input string. RETURN VALUES
The modified string is returned. If no matches are found in $string, then it will be returned unchanged. EXAMPLES
For example, the following code snippet prints "This was a test" three times: Example #1 ereg_replace(3) example <?php $string = "This is a test"; echo str_replace(" is", " was", $string); echo ereg_replace("( )is", "\1was", $string); echo ereg_replace("(( )is)", "\2was", $string); ?> One thing to take note of is that if you use an integer value as the $replacement parameter, you may not get the results you expect. This is because ereg_replace(3) will interpret the number as the ordinal value of a character, and apply that. For instance: Example #2 ereg_replace(3) example <?php /* This will not work as expected. */ $num = 4; $string = "This string has four words."; $string = ereg_replace('four', $num, $string); echo $string; /* Output: 'This string has words.' */ /* This will work. */ $num = '4'; $string = "This string has four words."; $string = ereg_replace('four', $num, $string); echo $string; /* Output: 'This string has 4 words.' */ ?> Example #3 Replace URLs with links <?php $text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", '<a href="\0">\0</a>', $text); ?> NOTES
Note As of PHP 5.3.0, the regex extension is deprecated in favor of the PCRE extension. Calling this function will issue an E_DEPRECATED notice. See the list of differences for help on converting to PCRE. Tip ereg_replace(3) is deprecated as of PHP 5.3.0. preg_replace(3) is the suggested alternative to this function. SEE ALSO
ereg(3), eregi(3), eregi_replace(3), str_replace(3), preg_replace(3), quotemeta(3). PHP Documentation Group EREG_REPLACE(3)
All times are GMT -4. The time now is 01:44 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy