The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"замена на bash"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Разное / Linux)
Изначальное сообщение [ Отслеживать ]

"замена на bash"  +/
Сообщение от Вася (??) on 05-Апр-15, 00:25 
Помогите, пожалуйста, программирование со мной не дружит

имеем текстовый  файл - 400 значений, пример:

Вася
Петя
Миша
итд...

Так же есть другие 400 файлов, например:

/tmp/file1.txt
/tmp/file2.txt
/tmp/file3.txt
итд

В каждом файле есть запись, например:

...
ИМЯ: Андрей
...

Подскажите, пожалуйста, как выполнить замену, чтобы в /tmp/file1.txt было ИМЯ:Вася
в /tmp/file2.txt ИМЯ: Петя, а в файле /tmp/file3.txt ИМЯ: Миша

Заранее очень благодарен, спасибо

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "замена на bash"  +1 +/
Сообщение от Алексей (??) on 05-Апр-15, 10:16 
> Подскажите, пожалуйста, как выполнить замену, чтобы в /tmp/file1.txt было ИМЯ:Вася
> в /tmp/file2.txt ИМЯ: Петя, а в файле /tmp/file3.txt ИМЯ: Миша

Порядок значений в первом файле соответствует порядку файлов, в которых нужно произвести замену?

Если правило понял задачу, то на bash можно решить так:


#!/bin/bash

# меняем разделитель полей на случай имен с пробелами
IFS=$'\n'

# сохраняем массив имен
NAMES=($(</tmp/names.txt))

# сохраняем массив файлов
FILES=(/tmp/file*.txt)

# итерируем по массиву имен
for ((i=0; i<${#NAMES[@]}; i++)); do

    # проверяем, что имя не пустое и соответствующий файл существует
    if [[ -n "${NAMES[i]}" && -f "${FILES[i]}" ]]; then

        # выполняем замену с созданием резервной копии
        sed -i.bak "s/ИМЯ: .*/ИМЯ: ${NAMES[i]}/g" "${FILES[i]}"
    fi
done

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "замена на bash"  +/
Сообщение от Вася (??) on 05-Апр-15, 15:22 
Спасибо огромное, вы мне очень сильно помогли.
Ваш скрипт отлично работает
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру