HowTo: Reverse a String In Unix / Linux Shell?

by on July 6, 2012 · 5 comments· LAST UPDATED July 6, 2012

in , ,

How do I reverse lines of a file or files under Linux or Unix like operating systems?

You can use any one of the following method.

Say hello to rev command

The rev command copies the specified files, reversing the order of characters in every line. If no files are specified, the standard input (from keyboard) is read. If rev command is installed use it as follows:

echo "nixcraft" | rev

Sample outputs:


You can use the following syntax too:

rev<<<"This is a test"

Sample outputs:

tset a si sihT

Perl script example to reverse a string

You can use the perl and syntax is:

perl -ne 'chomp;print scalar reverse . "\n";'<<<"nixcraft"


echo 'nixcraft' | perl -ne 'chomp;print scalar reverse . "\n";'

Bash shell script example to reverse a string

You can use bash and sample bash script is:

for (( i=$len-1; i>=0; i-- ))
echo "$reverse"

Run it as follows:
./script nixcraft
Sample outputs:

Tweet itFacebook itG+ itDownload PDF versionFound an error/typo on this page?

{ 5 comments… read them below or add one }

1 whyqaz July 9, 2012 at 9:16 am

What does ‘<<<' do?
Or what is it?


2 Paulo Freitas July 9, 2012 at 5:58 pm

Python equivalent:

echo foo | python -c 'import sys;print([::-1])'
python -c 'import sys;print([::-1])' <<< foo

PHP equivalent:

echo foo | php -r 'print strrev(trim(fgets(STDIN)));'
php -r 'print strrev(trim(fgets(STDIN)));' <<< foo


3 nixCraft July 9, 2012 at 9:06 pm

See Here strings.

Hope this helps!


4 Radha October 4, 2013 at 3:54 pm

I am looking to reverse 4 digits in a string, could you please let me know what would be syntax, and data will be 178126*********4321 , it is not a column, so it possible if we can identify the position of charcter like 12 th to 16 charecter needs to be reveresed , is it possible, if yes could you please let me know the syntax.



5 foobar February 25, 2015 at 1:48 pm

Can be done using awk split function. Example reversing the three middle characters of a string:

echo 1234567 | awk '{split($1,a,"");printf("%s%s%s%s%s%s%s",a[1],a[2],a[5],a[4],a[3],a[6],a[7])}'


Leave a Comment

Tagged as: , , , , , , , ,

Previous Faq:

Next Faq: