Bash Построчный реверс текстового файла

Иногда есть необходимость перевернуть текстовый файл, то есть, сделать так что бы, первая строка стала последней, а последняя стала первой, вторая стала предпоследней, а предпоследняя второй ну и так далее, для этого можно использовать вот такой скрипт:

#!/bin/bash
#
#Script to reverse text file v0.11
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]} >> $file".new"
done

Если сохранить данный скрипт в файле script, то запускаем мы его:

./script <имя обрабатываемого файла>

Случайные Статьи

Loading…


Количество просмотров :3221

2 Comments

  1. a:

    Блин, зачем такие сложности. Всё проще гораздо: tac file.txt > file.new.txt

    • admin:

      Не расстраивайтесь. tac — замечательная команда, которая чудесно делает свое дело, данный скрипт делает то же самое, но используя исключительно конструкции языка, вот и все.

Оставьте коментарий