Reverse of a string


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Reverse of a string
# 1  
Old 09-23-2011
Reverse of a string

Hi All,

I have a String str="Manish". I would like to reverse it.

I know the option to do this in bash is: echo "Manish" | rev

but I have seen an alternate solution somewhere, which states that:

Code:
str="Manish" echo $str | awk '{ for(i=length($0);i>=1;i--) printf("%s",substr($0,i,1)); }'

In above script I have a doubt about the $0.

when I use $0 on console then it gives output : bash, while using it in script it is showing the desired output.

Could anyone please help me in understanding the $0 work here..

Many thanks in advance.

Moderator's Comments:
Mod Comment Video tutorial on how to use code tags in The UNIX and Linux Forums.

Last edited by radoulov; 09-24-2011 at 04:13 AM..
# 2  
Old 09-23-2011
$0 is for the entire line - when we are using it in awk. (in your case Manish)
$0 is the name of the script itself.
$0 - is the filename or command name when you are using it inside a file or command.

when you do echo $0, the echo command is executed by bash shell. So it gives the output as bash.

Special Variable Types
Unix - Special Variables
# 3  
Old 09-23-2011
Everything inside single quotes there gets fed into awk literally. So it gives awk $0, not the first argument.

awk considers $0 to be the entire line.

You can simplify that a bit by setting FS="", which makes each field its own character:

Code:
echo "slartibartfast" | awk -v FS="" '{ for(N=NF; N>=1; N--) printf("%s", $N); }'


Last edited by Corona688; 09-23-2011 at 06:36 PM..
# 4  
Old 09-23-2011
Code:
echo 'abcdefghijk' | sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'

# 5  
Old 09-23-2011
That's beautiful in a hideous way. I was tempted to think the \n would do nothing, but apparently it's necessary. What does it do? Smilie
# 6  
Old 09-23-2011
Quote:
Originally Posted by Corona688
That's beautiful in a hideous way. I was tempted to think the \n would do nothing, but apparently it's necessary. What does it do? Smilie
Famous Sed One-Liners Explained, Part I: File Spacing, Numbering and Text Conversion and Substitution - #37.
# 7  
Old 09-24-2011
Quote:
Originally Posted by Corona688
You can simplify that a bit by setting FS="", which makes each field its own character
[...]
Note that this is a GNU awk extension and it's not specified by the POSIX standard.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

How to cut part of a string in reverse?

Hi, how to cut part of a string sing delimiter in reverse input file 1,2,st-pa-tr-01,2,3,4, 2,3,ff-ht-05,6,7,8 how can i obtain strings till st-pa-tr ff-ht i.e cutting the last part og string -01 and -05 Thanks & Regards Nivi edit by bakunin: changed thread title (typo) (3 Replies)
Discussion started by: nivI
3 Replies

2. Shell Programming and Scripting

awk reverse string

Hello, Can anyone explain for me in this script to reverse the string? 1) the "x=x" part, how it works? $ echo welcome | awk '{ for(i=length;i!=0;i--)x=x substr($0,i,1);}END{print x}' $ emoclew2) x seems to be an array at the END, but can it automatically print the whole array in awk? Thanks... (8 Replies)
Discussion started by: yifangt
8 Replies

3. Shell Programming and Scripting

To reverse a string

Hi All, I would like to know , how to reverse a given string example : Hi how are you Required Output: you are how HiThanks (7 Replies)
Discussion started by: santhoshks
7 Replies

4. Shell Programming and Scripting

reverse string matching

Guys, I am trying to find a way to achieve this. I need to print /usr/local/apche/htdocs only from the string /usr/local/apache/htdocs/file.php using the regex. The below did not work. I know a solution with normal cut, I need a way to do this with the awk regex. awk '/+file.php/' (6 Replies)
Discussion started by: anilcliff
6 Replies

5. Programming

String reverse

Hi all, I jus wanna print string b after reversing it. but the out put is blank. My code snippet is below. :wall: int main() { char * a, * b; b = new char; a = new char; int len, le; le = 0; cout<< " enter your string \n"; cin>> a; len = strlen(a); for(int i =... (8 Replies)
Discussion started by: vineetjoshi
8 Replies

6. Shell Programming and Scripting

reverse a string based on else

I have a file like this: Dog Cat One ABCDEFGHIJ house Dog Cat Two ABCDEFGHIJ house Cat Cat One ABCDEFGHIJ house Cat Cat Two ABCDEFGHIJ house I want to look at $3 and if it says "Two" print out the line except reverse $4. Dog Cat One ABCDEFGHIJ house Dog Cat Two JIHGFEDCBA house ... (3 Replies)
Discussion started by: dcfargo
3 Replies

7. Shell Programming and Scripting

PerL Reverse the string.

Hi, I am very new to perl. My question: How i can reverse the given string using substr function but without using reverse function in perl? Anybody please help. thanks, -Lalit (3 Replies)
Discussion started by: email-lalit
3 Replies

8. Filesystems, Disks and Memory

shell program to reverse the string

pls help me in getting that program (1 Reply)
Discussion started by: saikiran
1 Replies

9. Shell Programming and Scripting

reverse string manipulation

How to get the reverse parsing work. I have a strings like aqw-wef-324-err.log wefd-324r-err.log efrt-4rfr.log . . i want to have string upto last hypen. aqw-wef-324 wefd-324r ... (1 Reply)
Discussion started by: senthilk615
1 Replies

10. Shell Programming and Scripting

string in reverse

Can we print any string in reverse order? For example: oracle 16294 1 0 Aug 11 ? 0:00 ora_reco_crepd oracle 16276 1 0 Aug 11 ? 0:19 ora_dbw0_crepd I need second last column from this output. (0:00 & 0:19). I can use awk print $2 after reversing the string. ... (4 Replies)
Discussion started by: malaymaru
4 Replies
Login or Register to Ask a Question