Титла: Заместване на string чрез sed Публикувано от: globaluty в Nov 26, 2015, 15:42 Здравейте, изпитвам затруднения с използването на sed. Имам файл със следното съдържание:
Код: hello Опитвам се да изтрия последните 2 реда чрез следната команда: sed 'N; s/word1\nword2.*//' filename Или пък да ги заменя с други 2 реда: sed 'N; s/word1\nword2/word2\nword1/' filename Нищо не се случва :'( Използвах този пример, който пък работи: http://superuser.com/questions/634844/multi-line-sed-replace Някакви идеи къде бъркам? Титла: Re: Заместване на string чрез sed Публикувано от: tdonev в Nov 26, 2015, 16:27 След sed сложи '-i' и ще стане.
Титла: Re: Заместване на string чрез sed Публикувано от: globaluty в Nov 26, 2015, 16:35 Без -i изписва output-a какво ще стане след изпълнение на командата, без да променя в действителност файла.
Пробвах все пак, но не става. Титла: Re: Заместване на string чрез sed Публикувано от: tdonev в Nov 26, 2015, 16:58 Погледни примера който ти давам. :)
Код: $ echo "НЕ СТАВА" >> тест.txt Титла: Re: Заместване на string чрез sed Публикувано от: globaluty в Nov 26, 2015, 17:02 Така работи. Както виждаш обаче, аз се опитвам да заменя 2 реда, а не само 1 стринг от целия документ :) Това че съм ползвал word1 и word2 е просто, за да е по-нагледно.
Титла: Re: Заместване на string чрез sed Публикувано от: tdonev в Nov 26, 2015, 17:11 Беше пример, ето ти още един :)
Код: $ cat тест.txt Титла: Re: Заместване на string чрез sed Публикувано от: globaluty в Nov 26, 2015, 17:15 Идеята ми е да замества конкретно нещо. Защото ще имам следното във файла:
cd /home/user/app1 #./run.sh cd /home/user/app2 #./run.sh и още така надолу.. Искам да променя само на app1 от #./run.sh на ./run.sh :) Титла: Re: Заместване на string чрез sed Публикувано от: korea60 в Nov 26, 2015, 21:27 Ако съм ви разбрал правилно това би трябвало да помогне:
cat proba.txt | sed '/app1/{n;s/#//}' Титла: Re: Заместване на string чрез sed Публикувано от: globaluty в Nov 26, 2015, 23:47 Ако съм ви разбрал правилно това би трябвало да помогне: Върши работа, а после как мога да го върна знака? Титла: Re: Заместване на string чрез sed Публикувано от: korea60 в Nov 27, 2015, 10:18 Единият вариант е да позлваш sed така:
-i.bak , така ще се създаде копие на файла с разширение .bak (за евентуално връзщане на старият файл), нямам възможност за тест в момента и не искам да те подвеждам, затова предлагам само горното. cat proba.txt | sed '/app1/{n;s/^/#/}' - Би трябвало да работи. |