Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / задачка с cat / 12 сообщений из 12, страница 1 из 1
01.10.2008, 07:20:59
    #35568763
Nataly.S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задачка с cat
Доброе утро всем.

ОЧень необходима ваша помощь. Задачка простенькая. Unix почти не знаю, а сделать все таки надо.

Есть файл 1.txt и содержит такие строки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
dn: cn=user1

dn: cn=user2

...

...
Надо под каждой записью вставить еще 3 строчки
changetype: modify
replace: orclisenable
orclisenable: disable

Пробовала так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
cat ./1.txt | while read line
> do
> echo $line >> 12.txt
> echo "changetype: modify" >>12.txt
> echo "replace: orclisenable" >>12.txt
> echo "orclisenable: disable" >>12.txt
> echo >> 12.txt
> done
В итоге эти 3 строчки повторялись и получилось вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
cn=user1
changetype: modify
attribute: orclisenable
orcliasenable: dasable


changetype: modify
attribute: orclisenable
orcliasenable: dasable

cn=user2
changetype: modify
attribute: orclisenable
orcliasenable: dasable


changetype: modify
attribute: orclisenable
orcliasenable: dasable

что где исправить? подскажите плиз
...
Рейтинг: 0 / 0
01.10.2008, 07:46:59
    #35568772
pemp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задачка с cat
в
автор
dn: cn=user1

dn: cn=user2
между строчками пустая строка?
если так от того так и получается.
навскидку 2 варианта или грепом вырвать сначала не пустые строки или тупо в цикле писать
всякие > echo "changetype: modify" >>12.txt итд только каждый нечетный раз. чтобы не писать для этого условий, просто добавить в конце цикла еще раз чтение строки из файла
...
Рейтинг: 0 / 0
01.10.2008, 08:25:02
    #35568796
Nataly.S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задачка с cat
pempв

dn: cn=user1

dn: cn=user2
между строчками пустая строка?


да

pemp
... просто добавить в конце цикла еще раз чтение строки из файла

что-то не работает.
...
Рейтинг: 0 / 0
01.10.2008, 08:27:09
    #35568797
Nataly.S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задачка с cat
Можете конкретный скрипт предоставить...
Почему по 2 раза то вставляет строки нужные...непонятно...
...
Рейтинг: 0 / 0
01.10.2008, 08:54:49
    #35568827
pemp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задачка с cat
не могу. под рукой сейчас нет ничего похожего на unix, а по памяти боюсь ошибиться в синтаксисе. давно скрипты не писал.
а два раза и должно быть. может так понятнее станет:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
cn=user1     // read line   echo $line >> 12.txt ;   в $Line  "cn=user1"
changetype: modify //echo "changetype: modify" >>12.txt
attribute: orclisenable //echo "replace: orclisenable" >>12.txt
orcliasenable: dasable // echo "orclisenable: disable" >>12.txt
          //echo >> 12.txt
          // read line ;   echo $line >> 12.txt в $line пустая строка
changetype: modify  // и дальше поновой
attribute: orclisenable
orcliasenable: dasable
               // echo >> 12.txt одна пустая строчка между "абзацами" ибо в этот разз читается cn=user2
cn=user2
changetype: modify
attribute: orclisenable
orcliasenable: dasable


changetype: modify
attribute: orclisenable
orcliasenable: dasable

...
Рейтинг: 0 / 0
01.10.2008, 09:34:58
    #35568881
Leonid Belov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задачка с cat
cat filename | awk '{ if ($0 != "") printf("%s\nchangetype: modify\nreplace: orclisenable\norclisenable: disable\n", $0) }'
...
Рейтинг: 0 / 0
01.10.2008, 22:39:39
    #35570905
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задачка с cat
Это надо SED использовать.
...
Рейтинг: 0 / 0
02.10.2008, 01:31:47
    #35571064
avb1003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задачка с cat
Nataly.SДоброе утро всем.
...
что где исправить? подскажите плиз

Пропустите пустую строку:
Nataly.S
cat ./1.txt | while read line
> do
> [-n "$line ] || continue
> echo $line >> 12.txt
> echo "changetype: modify" >>12.txt
> echo "replace: orclisenable" >>12.txt
> echo "orclisenable: disable" >>12.txt
> echo >> 12.txt
> done
...
Рейтинг: 0 / 0
02.10.2008, 02:22:26
    #35571091
avb1003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задачка с cat
Sorry.
Nataly.S
...
> [-n "$line ] || continue
...

Следует читать как:
Nataly.S
...
> [-n "$line" ] || continue
...
...
Рейтинг: 0 / 0
02.10.2008, 14:06:59
    #35572322
Leonid Belov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задачка с cat
MasterZivЭто надо SED использовать.

Можно и sed. Дело вкуса и настроения. Хотя лично мне awk понятнее...
...
Рейтинг: 0 / 0
03.10.2008, 09:53:07
    #35573924
ivsmir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задачка с cat
Чтобы пропустить пустые строки всего то нужно заменить
cat ./1.txt | while read line
на
cat ./1.txt | strings | while read line
...
Рейтинг: 0 / 0
03.10.2008, 10:47:49
    #35574109
IT-Клоп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задачка с cat
MasterZivЭто надо SED использовать.

действительно

Код: plaintext
1.
2.
3.
4.
5.
6.
$ cat s.txt | sed -e '/dn: cn=user[0-9]/{
achangetype: modify
areplace: orclisenable
aorclisenable: disable
}
'
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / задачка с cat / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]