Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок
Модераторы: vadim64, terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
QweЯty
- лейтенант
- Сообщения: 797
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
-
Контактная информация:
Непрочитанное сообщение
QweЯty » 2012-06-21 20:17:02
есть такое:
Код: Выделить всё
> sockstat | grep java | awk '{print $3}'
6539
6539
6539
6539
6539
6526
6526
6526
6526
6526
5704
5704
5704
5704
5704
5704
5704
можно ли как нибудь получить не повторяющие, просто три числа 5704 6526 6539
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
QweЯty
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
QweЯty
- лейтенант
- Сообщения: 797
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
-
Контактная информация:
Непрочитанное сообщение
QweЯty » 2012-06-21 20:53:19
шшпасибо..
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
QweЯty
-
QweЯty
- лейтенант
- Сообщения: 797
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
-
Контактная информация:
Непрочитанное сообщение
QweЯty » 2012-06-21 21:32:53
не хоччется новую тему создавать....
чем можно заменить слово на другое в куче файлов?
sed'ом пробовал, он только удалять мастак... а заменить - нет
слов в файлах куча. и куча файлов
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
QweЯty
-
QweЯty
- лейтенант
- Сообщения: 797
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
-
Контактная информация:
Непрочитанное сообщение
QweЯty » 2012-06-21 21:40:21
есть вот такое
вот это 50000000 надо заменить на другое число...
но оябзательно после id="57"
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
QweЯty
-
QweЯty
- лейтенант
- Сообщения: 797
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
-
Контактная информация:
Непрочитанное сообщение
QweЯty » 2012-06-23 19:49:23
можете подсказать, что не так?
Код: Выделить всё
#!/bin/sh
for i in `find . -name "*.xml" -exec grep -H 'ingredient id="57"' {} ; | awk -F":" `{print $1}` | xargs`; do sed -i `` `s/ingredient id="57"/ingredient id="3742"/g` $i; done
пишет:
> ./sh.sh
./sh.sh: 1: Syntax error: "|" unexpected
./sh.sh: 3: Syntax error: Error in command substitution
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
QweЯty
-
QweЯty
- лейтенант
- Сообщения: 797
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
-
Контактная информация:
Непрочитанное сообщение
QweЯty » 2012-06-23 20:13:54
переделал до:
Код: Выделить всё
> cat sh1.sh
#!/bin/sh
for i in `find . -name "*.xml" -exec grep -H 'ingredient id="5962"' {} \; | awk '{print $1}' | xargs` ; do sed `s/ingredient id="5962"/ingredient id="57"/g` $i ;
пишет
Код: Выделить всё
> ./sh1.sh
./sh1.sh: s/ingredient: not found
sed: 1: "./382.xml:": invalid command code .
./sh1.sh: s/ingredient: not found
sed: 1: "./382.xml:": invalid command code .
./sh1.sh: s/ingredient: not found
sed: 1: "./382.xml:": invalid command code .
...
./sh1.sh: s/ingredient: not found
sed: 1: "./383.xml:": invalid command code .
./sh1.sh: s/ingredient: not found
sed: 1: "./383.xml:": invalid command code .
./sh1.sh: s/ingredient: not found
sed: 1: "./383.xml:": invalid command code .
./sh1.sh: s/ingredient: not found
sed: 1: "./383.xml:": invalid command code .
./sh1.sh: s/ingredient: not found
sed: 1: "./383.xml:": invalid command code .
./sh1.sh: s/ingredient: not found
пробел...
Код: Выделить всё
sed `s/ingredient\ id="5962"/ingredient\ id="57"/g`
но все равно таже ошибка..
Код: Выделить всё
sed: 1: "./383.xml:": invalid command code .
./sh1.sh: s/ingredient id=5962/ingredient id=57/g: not found
sed: 1: "./383.xml:": invalid command code .
./sh1.sh: s/ingredient id=5962/ingredient id=57/g: not found
sed: 1: "./383.xml:": invalid command code .
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
QweЯty
-
QweЯty
- лейтенант
- Сообщения: 797
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
-
Контактная информация:
Непрочитанное сообщение
QweЯty » 2012-06-23 20:20:53
да, забыл что sed потоковый..
а как сделать
чтота типа:
Код: Выделить всё
sed `s/ingredient\ id="5962"/ingredient\ id="57"/g` $i > $i_1
где _1 дописывается к переменной...
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
QweЯty
-
QweЯty
- лейтенант
- Сообщения: 797
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
-
Контактная информация:
Непрочитанное сообщение
QweЯty » 2012-06-23 20:52:16
и awk чего то не понимает -F"/" или "./"
чтобы без ./ показывало...
он при таком непоказывает НИЧЕГО
правда если -F"."
то тогда так
заработал:
Код: Выделить всё
> cat sh1.sh
#!/bin/sh
for i in `find . -name "*.xml" -exec grep -H 'ingredient id="5962"' {} \; | awk -F":" '{print $1}' | xargs` ; do sed 's/ingredient\ id=\"5962\"/ingredient\ id=\"57\"/g' $i ;
done
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
QweЯty
-
QweЯty
- лейтенант
- Сообщения: 797
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
-
Контактная информация:
Непрочитанное сообщение
QweЯty » 2012-06-23 21:04:04
не изменяет оригинал,
а как добавить к перменой $i _1 я хз как
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
QweЯty
-
QweЯty
- лейтенант
- Сообщения: 797
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
-
Контактная информация:
Непрочитанное сообщение
QweЯty » 2012-06-24 4:31:59
Код: Выделить всё
#!/bin/sh
for i in `find . -name "*.xml" -exec grep -H 'ingredient id="5962"' {} \; | awk -F":" '{print $1}' | xargs` ; do sed 's/ingredient\ id=\"5962\"/ingredient\ id=\"57\"/g' $i >> $i'_1' | echo $i'_1';
показывает что $i все таки изменилось
./383.xml_1
./383.xml_1
если
Код: Выделить всё
sed 's/ingredient\ id=\"5962\"/ingredient\ id=\"57\"/g' ./383.xml >> ./383.xml_1
вручную в консоли - все ок.
а скрипт отрабатывает, но ничего не нет...
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
QweЯty
-
QweЯty
- лейтенант
- Сообщения: 797
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
-
Контактная информация:
Непрочитанное сообщение
QweЯty » 2012-06-24 11:36:07
сделал....
все делов том что find выдавал один и тот же файл по несколько раз. применил uniq из первых постов
Код: Выделить всё
> cat sh.sh
#!/bin/sh
for i in `find . -name "*.xml" -exec grep -H 'ingredient id="5962"' {} \; | awk -F":" '{print $1}' | uniq | xargs` ; do `sed 's/ingredient\ id=\"5962\"/ingredient\ id=\"57\"/g' $i >> $i'_1' | mv $i'_1' $i `;
done
>
работает, так как нужно
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
QweЯty
-
QweЯty
- лейтенант
- Сообщения: 797
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
-
Контактная информация:
Непрочитанное сообщение
QweЯty » 2012-06-30 16:52:58
spf писал(а):Например, заменить на 20
Код: Выделить всё
sed 's/\(id="57" count="\)[0-9]*/\120/' file
когда вручную задаешь все работает.
когда в скрипте:
Код: Выделить всё
> cat sh.sh
#!/bin/sh
#for i in `find . -name "*.xml" -exec grep -H 'ingredient id="4037"' {} \; | awk -F":" '{print $1}' | uniq | xargs` ; do `sed 's/ingredient\ id=\"4037\"/ingredient\ id=\"57\"/g' $i >> $i'_1' | mv $i'_1' $i `;
#
#done
for i in `find . -name "*.xml" -exec grep -H 'ingredient id="57"' {} \; | awk -F":" '{print $1}' | uniq | xargs` ; do `sed 's/\(ingredient id="57" count="\)[0-9]*/\110/' $i >> $i'_1' | mv $i'_1' $i `;
done
то нифига...
могут как то
() влиять на это?
UPD
нашел.
Код: Выделить всё
for i in `find . -name "*.xml" -exec grep -H 'ingredient id="57"' {} \; | awk -F":" '{print $1}' | uniq | xargs` ; do `sed 's/\(ingredient\ id=\"57\"\ count=\"\)[0-9]*/\110/' $i >> $i'_1' | mv $i'_1' $i `;
все робит.
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
QweЯty