Автор Тема: Заместване на string чрез sed  (Прочетена 2445 пъти)

globaluty

  • Напреднали
  • *****
  • Публикации: 96
    • Профил
Заместване на string чрез sed
« -: Nov 26, 2015, 15:42 »
Здравейте, изпитвам затруднения с използването на sed. Имам файл със следното съдържание:

Код:
hello
helloasd
hello2
word1
word2

Опитвам се да изтрия последните 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

Някакви идеи къде бъркам?
Активен

tdonev

  • Гост
Re: Заместване на string чрез sed
« Отговор #1 -: Nov 26, 2015, 16:27 »
След sed сложи '-i' и ще стане.
Активен

globaluty

  • Напреднали
  • *****
  • Публикации: 96
    • Профил
Re: Заместване на string чрез sed
« Отговор #2 -: Nov 26, 2015, 16:35 »
Без -i изписва output-a какво ще стане след изпълнение на командата, без да променя в действителност файла.

Пробвах все пак, но не става.
Активен

tdonev

  • Гост
Re: Заместване на string чрез sed
« Отговор #3 -: Nov 26, 2015, 16:58 »
Погледни примера който ти давам. :)
Код:
$ echo "НЕ СТАВА" >> тест.txt
$ cat тест.txt
НЕ СТАВА
$ sed -i 's/НЕ СТАВА/СТАВА/g' тест.txt
$ cat тест.txt
СТАВА
Активен

globaluty

  • Напреднали
  • *****
  • Публикации: 96
    • Профил
Re: Заместване на string чрез sed
« Отговор #4 -: Nov 26, 2015, 17:02 »
Така работи. Както виждаш обаче, аз се опитвам да заменя 2 реда, а не само 1 стринг от целия документ  :) Това че съм ползвал word1 и word2 е просто, за да е по-нагледно.
Активен

tdonev

  • Гост
Re: Заместване на string чрез sed
« Отговор #5 -: Nov 26, 2015, 17:11 »
Беше пример, ето ти още един :)

Код:
$ cat тест.txt 
hello
helloasd
hello2
word1
word2
$ sed -i -e 's/word1/WORD1-CHANGE/' -e 's/word2/WORD2-CHANGE/' тест.txt
$ cat тест.txt
hello
helloasd
hello2
WORD1-CHANGE
WORD2-CHANGE
$
Активен

globaluty

  • Напреднали
  • *****
  • Публикации: 96
    • Профил
Re: Заместване на string чрез sed
« Отговор #6 -: Nov 26, 2015, 17:15 »
Идеята ми е да замества конкретно нещо. Защото ще имам следното във файла:

cd /home/user/app1
#./run.sh

cd /home/user/app2
#./run.sh

и още така надолу..

Искам да променя само на app1 от #./run.sh на ./run.sh :)
Активен

korea60

  • Напреднали
  • *****
  • Публикации: 189
    • Профил
Re: Заместване на string чрез sed
« Отговор #7 -: Nov 26, 2015, 21:27 »
Ако съм ви разбрал правилно това би трябвало да помогне:

cat proba.txt | sed '/app1/{n;s/#//}'
Активен

globaluty

  • Напреднали
  • *****
  • Публикации: 96
    • Профил
Re: Заместване на string чрез sed
« Отговор #8 -: Nov 26, 2015, 23:47 »
Ако съм ви разбрал правилно това би трябвало да помогне:

cat proba.txt | sed '/app1/{n;s/#//}'

Върши работа, а после как мога да го върна знака?
Активен

korea60

  • Напреднали
  • *****
  • Публикации: 189
    • Профил
Re: Заместване на string чрез sed
« Отговор #9 -: Nov 27, 2015, 10:18 »
Единият вариант е да позлваш sed така:
-i.bak , така ще се създаде копие на файла с разширение .bak (за евентуално връзщане на старият файл),
нямам възможност за тест в момента и не искам да те подвеждам, затова предлагам само горното.


cat proba.txt | sed '/app1/{n;s/^/#/}' - Би трябвало да работи.
« Последна редакция: Nov 27, 2015, 10:21 от korea60 »
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Modem init string i chat script
Настройка на хардуер
Nerdboy 3 3093 Последна публикация Aug 16, 2002, 17:16
от Michael
Init-string for correct dial - RH6.2<->R.well33.6
Настройка на програми
enemy 0 2228 Последна публикация Sep 14, 2002, 16:05
от enemy
iptables string match
Настройка на програми
DHCP 0 1798 Последна публикация May 20, 2004, 23:04
от DHCP
iptables логване на string от трафика
Системна Сигурност
freedj 13 4848 Последна публикация Feb 29, 2012, 18:50
от freedj