Помогите с shell скриптом

Модератор: Модераторы разделов

prozac
Сообщения: 1

Помогите с shell скриптом

Сообщение prozac »

Помогите пожалуйста, нужен скрипт который бы поменял строки местами в выбраном текстовом файле. Задаются номера этих строк и в файле они меняются местами. Заранее спасибо.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Помогите с shell скриптом

Сообщение Portnov »

iУведомление от модератора

Ждём демонстрации ваших попыток решить задачу. А так -
Темы от студентов с запросами готовых решений по заданиям зарываются не глядя.

Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
knicefire
Сообщения: 86
ОС: Arch Linux

Re: Помогите с shell скриптом

Сообщение knicefire »

Я конечно не спец... и вообще не мешало бы такие простенькие примеры самому делать
вот например что у меня получилось в результате 5 минут "трудов"

Код: Выделить всё

#!/bin/bash
filePath=$1
nFirstString=$2
nSecondString=$3
fileOut=$4

FirstString=`sed -n ''$nFirstString'p' $filePath`
SecondString=`sed -n ''$nSecondString'p' $filePath`

i=1
while read string
do
    if [ "$i" = "$nFirstString" ]
    then
        echo $SecondString >> $fileOut
    elif [ "$i" = "$nSecondString" ]
    then
        echo $FirstString >> $fileOut
    else
        echo $string >> $fileOut
    fi
    i=`expr $i + 1`
done < "$filePath"


Вот вывод

knife@serv

knife@serv ~ $ ./string.sh file 2 3 file2 knife@serv ~ $ cat file Это мой не любимый файл knife@serv ~ $ cat file2 Это не мой любимый файл knife@serv ~ $
Спасибо сказали:
Аватара пользователя
netelis
Сообщения: 95
ОС: Debian Wheezy i686

Re: Помогите с shell скриптом

Сообщение netelis »

А что делает цикл

Код: Выделить всё

while read string
do
    if [ "$i" = "$nFirstString" ]
    then
        echo $SecondString >> $fileOut
    elif [ "$i" = "$nSecondString" ]
    then
        echo $FirstString >> $fileOut
    else
        echo $string >> $fileOut
    fi
    i=`expr $i + 1`
done < "$filePath"

Какие значения присваиваются переменным read и string?
read это переменная или комманда?
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Помогите с shell скриптом

Сообщение Portnov »

!Предупреждение от модератора

BASH Scripting
Тема закрыта.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали: