[SOLVED] Using a long Bash command including single quotes and pipes in a Bash script
Linux - GeneralThis Linux forum is for general Linux questions and discussion.
If it is Linux Related and doesn't seem to fit in any other forum then this is the place.
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.
It's recommended not to use backticks to embed commands. It's been superseded by the $() form. I don't get any errors when I use location=$(<your_long_command>).
Edit: By the way, you can usually use "sed -e 'expression1' -e 'expression2', to combine your filters into a single command.
Also, I can't be 100% certain because I don't know what your input value is supposed to be, but I'm guessing the error is coming from a '/' value being in the sed input somewhere, messing up the reading of the separators. Or something like that. You can change the sed separator to another character instead (e.g. sed -e 's|ip address flag ||') which also eliminates the error messages.
By the way, just what exactly are you trying to extract from the lynx output anyway? It's likely we can clean up the command and make it more efficient. I tried running it with the ip address of google.com and got nothing.
Last edited by David the H.; 07-22-2009 at 10:33 AM.
Besides that, using all of perl, awk, sed, egrep and grep is, to say the least, an overkill. Either awk or perl should be enough to do all the parsing, or even sed. I'd also drop lynx in favor of wget -O - if possible, it seems to be much standard these days, but that's just my opinion.
I haven't looked deeply into the purpose of that one-liner, but it seems to me that you are creating complication for nothing.
Thanks for the solution regarding the syntax, David the H.
With regard to the command itself. It is not a beauty, yet. With regard to what it does, it gives back the name of the city your provider is in, based on your IP.
Well, I'd help you to find a better way, but all I'm getting now is a "You reached your limit of 10 lookup queries per day" message, so I can't test it anymore. If you could provide a sample of the output we could work from instead, I'm sure we could give you a cleaner way to get that info.
My goal was to get a string representing the current city in which I am. (I push this string to a list which serves as the source for a web page on which some colleagues of mine can read my latest location update.) Looking for a simple way to extract my current location, I came across a working one liner at http://www.commandlinefu.com/ which produced relevant output for me:
I'd need to see the exact input in order to make sure that we can always match the city name. For example, is there only one line with the phrase "address city" in it, or could there be multiple hits?
If, for example, there's only one line with "address city: cityname" in it, and nothing following it but a newline, then it could be as simple as
Code:
<input>|sed -nr s/'^.*address city: (.+)$/\1/p'
I'm thinking it might not be as easy as that though, or else the original line probably wouldn't be as complex as it is.
Last edited by David the H.; 07-22-2009 at 11:27 AM.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.