≡ 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

Comments on this entry are closed.

  • zakko

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

  • vivek

    zakko,

    Thanks for the heads up.

  • Shane Menshik

    can’t you just do a

    tac filename.txt > filename-reversed.txt

  • snickers

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

  • Anonymous

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

  • Minakshi Kalita

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