LINUX.ORG.RU

Сообщения gamble

 

Добавить символы к строкам

В текстовом файле есть кучу доменов(строк), начинающихся с новой строки. Допустим файл здесь /home/man/result.txt

Ко всем им нужно добавить в конец имени ".error.log" - без кавычек.

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

Как это реализовать ? Мне важна сама комманда, которая добавит .error.log в конец имени строки

 , , , ,

gamble ()

Вопрос по циклам 2

1. Есть директория с текстовым файлом, где каждая строчка с новой строки

2. Есть директория с файлами.

3. Нужно строки применить к файлам, по типу «chgrp строка1 файл1, chgrp строка2 файл2»

Пробывал следующий цикл, но работает максимально криво, результат - строки не соответствуют нужным файлам. Есть другие идеи ? Либо есть какие-то ошибки ?

#!/bin/sh

cd /home/man/httpd-logs # перехожу в директорию с файлами
datax="/home/man/data.txt" #строки

target=$(ls -ll | awk '{print $9}' | grep 'access.log') #команда выводит нужные мне файлы в директори, не обращайте на неё внимания. считайте, что это просто вывод файлов в директории.

for i in $target
do 
read line
chgrp $line $i
done < $datax

 , , ,

gamble ()

Вопрос по циклам

Здравствуйте.

пункт 1. Есть текстовый файл, содержащий разные строки, где каждая начинается с новой строки.

пункт 2. Есть директория, содержащая файлы, где основная часть названия - повторяется парами, по двое; а конец названия как в примере ниже, то есть повторы идут через раз.

Пример:

  • hello.com.ua.access.list
  • hello.com.ua.error.log
  • donald.ru.access.list
  • donald.ru.error.log

... и т.д

Цель: применить комманду смены группы к каждому файлу из директории (пункт 2), но само название для смены группы берётся из текстового файла с самого начала (пункт 1), и только одно название должно быть для одной пары файлов, потом следующие название для следующей пары и т.д.

Пример:

  • chgrp lala hello.com.ua.access.list
  • chgrp lala hello.com.ua.error.log
  • chgrp gaga donald.ru.access.list
  • chgrp gaga donald.ru.error.log

... и т.д

Вопрос: я так понимаю, что это можно сделать двумя циклами через итерацию, но как это правильно реализовать ? Есть какие-то догадки ? Моя версия такова, но она не работает:

for i in $директория
do
while read line
do
chgrp $line $i
done < $текстовыйфайл
done
exit 0

 , , , ,

gamble ()

Вопрос по регулярному выражению

В текстовом файле есть две идентичные строки, каждая начинается с новой строки, одна строка с точкой на конце, вторая без точки.

Нужно удалить строку с точкой в конце.

Целый день ломал голову, как сделать это через sed, возможно есть другие варианты ?

Подскажите, пожалуйста.

 , ,

gamble ()

RSS подписка на новые темы