Sponsored Content
Top Forums Shell Programming and Scripting awk - ignore metacharacters, search shell variables Post 302657473 by DSommers on Sunday 17th of June 2012 08:15:06 PM
Old 06-17-2012
awk - ignore metacharacters, search shell variables

Can I use awk to search for a string, passed from the shell, that might include metacharacters?

  • File1 entries: Bob Marley Jammin (Bonus Track).mp3
  • File2 entries: Bob Marley Jammin (Bonus Track).mp3 32000 /Music/Bob Marley/ Jammin (Bonus Track).mp3

So far, I have this;
Code:
$ sed -e 's/.*\ -\ //' -e 's/.mp3$//' File1.txt | while read z; do tit="$z" ; awk -v title="$tit" '{FS = "\t"} $2 ~ title {print $0}' File2.txt ; done

It's working, but I'm not figuring the best way to treat the variable passed from shell as pure text, to disregard any interpretations.

When it sees the ( , it chokes.

I'm trying to search a music playlist (file1) for the song title (Jammin (Bonus Track.mp3) in another file2, field 2. If found, print the line.

Can someone please help correct the above code?

Thank you.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Using shell variables In awk

Oh its not my day for syntax... cat gzipsize.txt | awk '{print "echo",$1,$2} > master.txt I have read a lot about the awk -v but haven't been able to get it to work. I have a variable in my script and I'm looking just to push it into the awk after the $2 (or anywhere would do)!!! Every... (11 Replies)
Discussion started by: nortypig
11 Replies

2. Shell Programming and Scripting

Modify shell variables with AWK

Dear Folks, I have a command output something like: And I want to store PIN0 and SIG0 in two shell variables, now I do a double awk: PIN=`gsmctl -d /dev/ttyS0 pin sig | awk '/PIN0/ { print $2}'` SIG=`gsmctl -d /dev/ttyS0 pin sig | awk '/SIG0/ { print $2}'` It's possible to... (4 Replies)
Discussion started by: Santi
4 Replies

3. Shell Programming and Scripting

Awk, shell variables

Hello, I've been trying to figure out how to use variables inside the AWK command and use it back in the korn shell sript. in my script I have lots of awk commands like this grep Listen /etc/ssh/sshd_config | \ awk '{ if ($2 == "22" ) print "OK"; else print "not OK" }' ... (3 Replies)
Discussion started by: mirusko
3 Replies

4. Shell Programming and Scripting

search and replace using awk with variables

Hi, I have been trying to use awk with variables that needs to search for a pattern and replace it with another pattern, the patterns are supplied in a variable. I have tried several different ways without success and hope that someone can help me. Here are the details echo $UPC 07007457809... (2 Replies)
Discussion started by: jerardfjay
2 Replies

5. UNIX for Advanced & Expert Users

use of variables in awk to search for pattern from a file

Hi, I need to extract all the content between two strings stored in two variables "startstring" and "endstring" startstring=hello enstring=world #notworking awk '/$startstring/, $NF ~ /$endstring/ ' file > file2 The above code is not working with variables. It works when actual string... (2 Replies)
Discussion started by: jeanjkj
2 Replies

6. Shell Programming and Scripting

awk - take variables out to shell

Hi, How could we take the value of awk variables out to shell? I know the following methods 1. awk '{print $1}' < file | read a echo $a 2. a=`awk '{print $1}' < file` echo $a Please let me know if there are any other methods. Also, how do we take more than 1 variable value... (4 Replies)
Discussion started by: Thumban
4 Replies

7. Shell Programming and Scripting

escaping metacharacters in paths for a shell command

I have a file which contains a list of paths separated by a new line character. e.g /some/path/to/a/file.png /some/path to/another/file.jpeg /some path/to yet/another/file Notice that these paths may contain metacharacters, the spaces for example are also not escaped. If I wanted... (5 Replies)
Discussion started by: cue
5 Replies

8. Shell Programming and Scripting

awk search/replace specific field, using variables for regexp & subsitution then overwrite file

Hello, I'm trying the solve the following problem. I have a file which I intend to use as a csv called master.csv The columns are separated by commas. I want to change the text on a specific row in either column 3,4,5 or 6 from xxx to yyy depending upon if column 1 matches a specified pattern.... (3 Replies)
Discussion started by: cyphex
3 Replies

9. UNIX for Dummies Questions & Answers

Command line not recognizing metacharacters in awk

Hello, I'm new to command line coding (and coding in general) and have run into a problem. I'm using awk to perform a global find and replace in a text file in the Terminal provided by Mac. Here is a sample of my textfile where the fields are separated by tabs. 1Ps 1,1 VWB/(J VWB VWB... (7 Replies)
Discussion started by: jvoot
7 Replies

10. Shell Programming and Scripting

Using Shell variables in awk

Hi All, I have a file which I am reading and looking for "EXIT" statement. I want to insert ":JCWPROD" after each EXIT statement only if ":JCWPROD" doesn't exist. Here is the sample file : EXIT Testing EXIT tesing123 EXIT Desired file : EXIT :JCWPROD Testing EXIT :JCWPROD... (7 Replies)
Discussion started by: nua7
7 Replies
MP3::Tag::ID3v1(3pm)					User Contributed Perl Documentation				      MP3::Tag::ID3v1(3pm)

NAME
MP3::Tag::ID3v1 - Module for reading / writing ID3v1 tags of MP3 audio files SYNOPSIS
MP3::Tag::ID3v1 is designed to be called from the MP3::Tag module. use MP3::Tag; $mp3 = MP3::Tag->new($filename); # read an existing tag $mp3->get_tags(); $id3v1 = $mp3->{ID3v1} if exists $mp3->{ID3v1}; # or create a new tag $id3v1 = $mp3->new_tag("ID3v1"); See MP3::Tag for information on the above used functions. * Reading the tag print " Title: " .$id3v1->title . " "; print " Artist: " .$id3v1->artist . " "; print " Album: " .$id3v1->album . " "; print "Comment: " .$id3v1->comment . " "; print " Year: " .$id3v1->year . " "; print " Genre: " .$id3v1->genre . " "; print " Track: " .$id3v1->track . " "; # or at once @tagdata = $mp3->all(); foreach $tag (@tagdata) { print $tag; } * Changing / Writing the tag $id3v1->comment("This is only a Test Tag"); $id3v1->title("testing"); $id3v1->artist("Artest"); $id3v1->album("Test it"); $id3v1->year("1965"); $id3v1->track("5"); $id3v1->genre("Blues"); # or at once $id3v1->all("song title","artist","album","1900","comment",10,"Ska"); $id3v1->write_tag(); * Removing the tag from the file $id3v1->remove_tag(); AUTHOR
Thomas Geffert, thg@users.sourceforge.net DESCRIPTION
title(), artist(), album(), year(), comment(), track(), genre() $artist = $id3v1->artist; $artist = $id3v1->artist($artist); $album = $id3v1->album; $album = $id3v1->album($album); $year = $id3v1->year; $year = $id3v1->year($year); $comment = $id3v1->comment; $comment = $id3v1->comment($comment); $track = $id3v1->track; $track = $id3v1->track($track); $genre = $id3v1->genre; $genre = $id3v1->genre($genre); Use these functions to retrieve the date of these fields, or to set the data. $genre can be a string with the name of the genre, or a number describing the genre. all() @tagdata = $id3v1->all; @tagdata = $id3v1->all($title, $artist, $album, $year, $comment, $track, $genre); Returns all information of the tag in a list. You can use this sub also to set the data of the complete tag. The order of the data is always title, artist, album, year, comment, track, and genre. genre has to be a string with the name of the genre, or a number identifying the genre. fits_tag() warn "data truncated" unless $id3v1->fits_tag($hash); Check whether the info in ID3v1 tag fits into the format of the file. as_bin() $str = $id3v1->as_bin(); Returns the ID3v1 tag as a string. write_tag() $id3v1->write_tag(); [old name: writeTag() . The old name is still available, but you should use the new name] Writes the ID3v1 tag to the file. remove_tag() $id3v1->remove_tag(); Removes the ID3v1 tag from the file. Returns negative on failure, FALSE if no tag was found. (Caveat: only one tag is removed; some - broken - files may have many chain-loaded one after another; you may need to call remove_tag() in a loop to handle such beasts.) [old name: removeTag() . The old name is still available, but you should use the new name] genres() @allgenres = $id3v1->genres; $genreName = $id3v1->genres($genreID); $genreID = $id3v1->genres($genreName); Returns a list of all genres, or the according name or id to a given id or name. new() $id3v1 = MP3::Tag::ID3v1->new($mp3fileobj[, $create]); Generally called from MP3::Tag, because a $mp3fileobj is needed. If $create is true, a new tag is created. Otherwise undef is returned, if now ID3v1 tag is found in the $mp3obj. Please use $mp3 = MP3::Tag->new($filename); $id3v1 = $mp3->new_tag("ID3v1"); # Empty new tag or $mp3 = MP3::Tag->new($filename); $mp3->get_tags(); $id3v1 = $mp3->{ID3v1}; # Existing tag (if present) instead of using this function directly SEE ALSO
MP3::Tag, MP3::Tag::ID3v2 ID3v1 standard - http://www.id3.org COPYRIGHT
Copyright (c) 2000-2004 Thomas Geffert. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the Artistic License, distributed with Perl. perl v5.14.2 2009-11-28 MP3::Tag::ID3v1(3pm)
All times are GMT -4. The time now is 08:52 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy