≡ Menu

Bash shell script to reverse text file contain using Shell array

This script also demonstrate how to use arrays under bash shell script.

#!/bin/bash
# Bash shell script to reverse text file contain i.e. concatenate files and
# print on the standard output in reverse. This script also demonstrate how
# to use arrays under bash shell script.
# -------------------------------------------------------------------------
# Copyright (c) 2005 nixCraft project 
# This script is licensed under GNU GPL version 2.0 or above
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# -------------------------------------------------------------------------
FILE="$1"
if [ $# -eq 0 ]; then
  echo "$(basename $0) - file-name"
  exit 1
fi
textArray[0]="" # hold text
c=0 # counter
# read whole file in loop
while read line
do
  textArray[$c]=$line # store line
  c=$(expr $c + 1) # increase counter by 1
done < $FILE
# get length of array
len=$(expr $c - 1 )
# use for loop to reverse the array
for (( i=$len; i>=0; i-- ));
do
  echo ${textArray[$i]}
done
{ 6 comments… add one }
  • Minakshi Kalita May 10, 2011, 5:47 am

    Thanks…………….. But i want this program using switch case

  • Anonymous January 4, 2011, 12:44 am

    tac $File | rev
    reverses output of everything, simple, both tac and rev in coreutils

  • snickers November 13, 2010, 10:52 pm

    It just reverses the ordering of the file lines. It does not reverse the actual text.

  • Shane Menshik November 12, 2009, 9:51 pm

    can’t you just do a

    tac filename.txt > filename-reversed.txt

  • vivek July 24, 2008, 7:07 am

    zakko,

    Thanks for the heads up.

  • zakko July 23, 2008, 10:54 pm

    textArray[c]=$line # store line
    isn’t it
    textArray[$c]=$line # store line
    ^
    |
    ERROR

Security: Are you a robot or human?

Leave a Comment