Помогите пожалуйсто написать небольшой скрипт. Никак не получаетсяДля заданных файлов (вводятся с клавы) заменить строку с заданным номером (тоже с клавы) на другую строку (тоже с клавы).
Если по простому:
1. Все файлы (имя с клавы).
2. Заменить строку с номером $n (введено с клавы) на другую строку $s (тоже от пользователя).Заранее благодарен!
>Помогите пожалуйсто написать небольшой скрипт. Никак не получаетсяНе получается? А где пример твоих попыток?
Хотел тебе на ЛОРе ответить, а ты уже и тут спросить успел (вообще кроспостить это не есть good). Лови пример:
coder@alt0 ~ $ cat sub.test
one
two
three
four
five
coder@alt0 ~ $ ./sub.sh
Name of file: sub.test
Number of line: 3
Substitution string: bla bla
coder@alt0 ~ $ cat sub.test
one
two
bla bla
four
five
coder@alt0 ~ $ cat sub.sh
#!/bin/shecho -n "Name of file: "
read FILEecho -n "Number of line: "
read LINEecho -n "Substitution string: "
read STRINGsed "`printf '%dd' $LINE`" sub.test \
| sed "`printf '%di\%s' $LINE "$STRING"`" >${FILE}.tmp
mv -f ${FILE}.tmp $FILE
coder@alt0 ~ $Работает, хотя и не очень красиво как-то с двумя sed'ами получилось.
Огромнейшее спасибо! Это самое красивое, компактное и !понятно! что я видел за последний час!
Попытки были, но они даже не доводились до конца и начинались они с чего-то похождего на это
fgrep "$str" `find ~/ -name "1*"`>files.txt
дальше не знал как по линиям считать из файла, чтобы потом отсечь все, что после ':' находится вот таким выражением {$templ_str%%:}, затем с помощью sed -e $templ_str {" ... "}
Если синтаксиса не знаешь, то до логики не добираешся((
Ещё раз спасибо!
>Огромнейшее спасибо! Это самое красивое, компактное и !понятно! что я видел за
>последний час!#!/bin/sh
echo -n "Name of file: "; read FILE
echo -n "Number of line: "; read LINE
echo -n "Substitution string: "; read STRINGsed -i "${LINE}c\
$STRING" $FILE
>sed -i "${LINE}c\
>$STRING" $FILEСпасибо за хинт :) Буду знать.