Query on Code


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Query on Code
# 1  
Old 04-06-2019
Query on Code

Hi All,

Can some one please explain the below code. Especially the %,* How it renaming the files and removing last field

Code:
for file in *.gz.*
do
 echo mv $file ${file%\.*}
done

i/p
Code:
abcd.gz.20151011.1

o/p
Code:
abcd.gz.20151011

# 2  
Old 04-06-2019
Yes, that's a "Parameter Expansion / Remove matching suffix pattern".


man bash:
Quote:
${parameter%word}
${parameter%%word}

Remove matching suffix pattern. The word is expanded to produce a pattern just as in pathname expansion. If the pattern matches a trailing portion of the
expanded value of parameter, then the result of the expansion is the expanded value of parameter with the shortest matching pattern (the ``%'' case) or the long”
est matching pattern (the ``%%'' case) deleted.
These 2 Users Gave Thanks to RudiC For This Post:
# 3  
Old 04-06-2019
Hello nag_sathi,

This is called "parameter expansion" see following from documentation.

Quote:
${parameter%word}
${parameter%%word}
The word is expanded to produce a pattern and matched according to the rules described below (see Pattern Matching). If the pattern matches If the pattern matches a trailing portion of the expanded value of parameter, then the result of the expansion is the value of parameter with the shortest matching pattern (the ‘%' case) or the longest matching pattern (the ‘%%' case) deleted. If parameter is ‘@' or ‘*', the pattern removal operation is applied to each positional parameter in turn, and the expansion is the resultant list. If parameter is an array variable subscripted with ‘@' or ‘*', the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list
Here is the link for understanding parameter expansion too.
Shell Parameter Expansion (Bash Reference Manual)

I hope this helps.

Thanks,
R. Singh
These 2 Users Gave Thanks to RavinderSingh13 For This Post:
# 4  
Old 04-06-2019
Quote:
Originally Posted by nag_sathi
[..]
Code:
for file in *.gz.*
do
 echo mv $file ${file%\.*}
done

[..]
Further notes:
  • The backslash serves no purpose here, you can leave it out.
  • There should be double quotes around the variable expansions "$file" "${file%.*}"
  • It is best to put -- (end of options) after mv
These 2 Users Gave Thanks to Scrutinizer For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell Script to execute Oracle query taking input from a file to form query

Hi, I need to query Oracle database for 100 users. I have these 100 users in a file. I need a shell script which would read this User file (one user at a time) & query database. For instance: USER CITY --------- ---------- A CITY_A B CITY_B C ... (2 Replies)
Discussion started by: DevendraG
2 Replies

2. Programming

JDBC code to pass the SQL query as parameter and execute?

Below i have the sample code. i need to pass the entire query from file or as parameter and read the results and write into a output file. here the number of columns are unknown. some times it may be 2,3 or entire columns from the table. read all the column results and write into a comma... (0 Replies)
Discussion started by: laknar
0 Replies

3. Shell Programming and Scripting

html code in SQL query

Hi expert, I have a script which is connecting with sql internally, fetch same data, store it in a file and then from os I cat this file and sending it to mail (windows outlook). This is working fine, I just need to know wether we can add some html codes with the sql query like we can add... (0 Replies)
Discussion started by: mcagaurav
0 Replies

4. Shell Programming and Scripting

want to query : YES or NO

hi i want to make script. where i want to query from the user yes or no exp: do you want to proceed : y for yes n for NO. how this is possible in unix (3 Replies)
Discussion started by: dodasajan
3 Replies

5. Shell Programming and Scripting

Query Oracle tables and return values to shell script that calls the query

Hi, I have a requirement as below which needs to be done viz UNIX shell script (1) I have to connect to an Oracle database (2) Exexute "SELECT field_status from table 1" query on one of the tables. (3) Based on the result that I get from point (2), I have to update another table in the... (6 Replies)
Discussion started by: balaeswari
6 Replies

6. Shell Programming and Scripting

add the output of a query to a variable to be used in another query

I would like to use the result of a query in another query. How do I redirect/add the output to another variable? $result = odbc_exec($connect, $query); while ($row = odbc_fetch_array($result)) { echo $row,"\n"; } odbc_close($connect); ?> This will output hostnames: host1... (0 Replies)
Discussion started by: hazno
0 Replies

7. UNIX for Dummies Questions & Answers

Need Help on query

I just started to learn unix - need help to write a script to query a logfile and produce the results that contains a specific word "alarm" for a period from X day to Y day. I really have no idea how to begin - :( please help... ____________________________________________________ #... (1 Reply)
Discussion started by: snipfer
1 Replies

8. Shell Programming and Scripting

Excel related query for the code..need help..

find /A/B/C/{1,3,5,7} -name "*.txt" -o -name "*.csv" -o -name "*.TXT" -o -name "*.dat" |xargs ls -ltr |awk '{print $8 ,$9}' > result.xls it will give the result that is $8 and &9 in the result file... let say i need the result is a excel file....and i need the result to be print like $8 field... (10 Replies)
Discussion started by: sapan123
10 Replies

9. Shell Programming and Scripting

query.....

hi friends i want to know details of `exec` exact use of this command ..... actually i went through the man page but i didn`t get the satisfactory ...conclusion.... thaks in advance.... (1 Reply)
Discussion started by: newson
1 Replies

10. Shell Programming and Scripting

query

I have converted data written on excel sheet in unix through shell & perl prg now the problem is I want that if starting columns of the xls sheet is Blank than when data is converted into unix then it should appear with this '|' sign. but it appearing like this: hfgg|tytt| but I want like... (2 Replies)
Discussion started by: akash
2 Replies
Login or Register to Ask a Question