Tomsk Sysadmins Forum

Unix => Программирование => Topic started by: Martin on March 22, 2007, 13:44:59

Title: Помогите написать скрипт в несколько строк.
Post by: Martin on March 22, 2007, 13:44:59
Помогите пожалуйсто написать небольшой скрипт. Никак не получается    

Для заданных файлов (вводятся с клавы) заменить строку с заданным номером (тоже с клавы) на другую строку (тоже с клавы).

Если по простому:
1. Все файлы (имя с клавы).
2. Заменить строку с номером $n (введено с клавы) на другую строку $s (тоже от пользователя).

Заранее благодарен!
Title: Помогите написать скрипт в несколько строк.
Post by: never hood on March 22, 2007, 14:27:39
Quote from: Martin
Если по простому:
1. Все файлы (имя с клавы).
2. Заменить строку с номером $n (введено с клавы) на другую строку $s (тоже от пользователя).
в один проход, без применения head/tail:
Code: [Select]
#!/bin/bash

echo -n Enter file name:
read fname
echo -n Enter row number:
read num
echo -n Enter rot to be placed instead of deleted one:
read row

x=1
# Для всех файлов в каталоге использовать
# for file in $path; do
#       все, что ниже после cat
# done
cat $fname | \
while read line; do
     if [ $x == $num ]; then
           echo $row
     else
           echo $line
     fi
     x=$[$x+1]
done

PS. Рекомендуется добавить проверку вводимых данных...