LINUX.ORG.RU

sed s/$loginname/$name/g store.html > mod.html;


0

0

Возникла необходимость поменять в отчёте сарга логины пользователей на 
их имена. Повершеллом сгенерил список, в котором каждая первая строка - 
логин, а каждая вторая - имя. Наваял такой скрипт:

full_file="/home/alexandr/fullusers"

cat index.html > store.html;

while read str
do
    loginname=$str;
    read str;
    name=$str;
    sed s/$loginname/$name/g store.html > mod.html;
    cat mod.html > store.html;
done < $full_file;

Когда запускаю, получаю:

sed: -e выражение #1, символ 21: незавершенная команда `s'
sed: -e выражение #1, символ 16: незавершенная команда `s'
sed: -e выражение #1, символ 14: незавершенная команда `s'
sed: -e выражение #1, символ 16: незавершенная команда `s'

и так много-много раз.

Поробовал взять s/$loginname/$name/g в кавычки, получил:

's/$loginname/$name/g'

После запуска результирующий файл остаётся таким же как и исходный.

Что не так?!

Заранее спасибо!!!
★★★★★

и сюда же вопрос, как можно sed'ом или ещё чем привести все символы в строке (в переменной) привести к нижнему регистру?

cyclon ★★★★★
() автор топика
Ответ на: комментарий от cyclon

С регистром разобрался, а вот что делать с sed'ом. Как я понял проблема с пробелами в именах пользователей, они в виде "Иванов Иван Иваныч"?

cyclon ★★★★★
() автор топика
Ответ на: комментарий от anonymous

просто не понятно откуда берется второй stdin, если первый берется из файла < $full_file

anonymous
()

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

anonymous
()

> Когда запускаю, получаю:

прежде чем запускать неплохо бы убедится, что команды делают именно то, чего ты от них ждешь, а не писать не знамо что и удивлятся результату

anonymous
()
Ответ на: комментарий от anonymous

Исходный файл с пользователями:

i.ivanov
Иванов Иван Иваныч
e.petrov
Петров Виктор Сергеевич

Исходный html-файл index.html:

...>i.ivanov<... 
...>e.petrov<...

Должен получится html файл:

...>Иванов Иван Иваныч<... 
...>Петров Виктор Сергеевич<... 

cyclon ★★★★★
() автор топика

sed s/$loginname/$name/g store.html > mod.html

поменяй на

sed "s/$loginname/$name/g" store.html > mod.html

потому как пробел в $name в первом случае будет разрывать аргумент для sed на два отдельных

gaa ★★
()
Ответ на: комментарий от gaa

> sed "s/$loginname/$name/g" store.html > mod.html

точно, чё то ступил :)

cyclon ★★★★★
() автор топика

В Линуксе у sed есть ключик -i, чтобы не заморачиваться с переименовыванием файлов.

php-coder ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.