2016-12-14 4 views
0

Как найти слово «UP» и заменить его «DOWN» в нижеследующих данных с помощью sed, awk или grep?Найти и заменить с помощью sed, awk или grep

document.getElementById("p1").innerHTML = "API Dev :: UP"; 
document.getElementById("p2").innerHTML = "API QA :: UP"; 
document.getElementById("p3").innerHTML = "API Reg :: UP"; 
document.getElementById("p4").innerHTML = "API Prod :: UP"; 

Я ищу, чтобы найти/заменить одну строку за раз. Что-то вроде использования for loop, а затем найти/заменить одну строку после другого.

Спасибо!

+1

Просьба пояснить 'одна строка за раз – sjsam

ответ

1

Это СЭД 101:

sed 's/:: UP/:: DOWN/' 
+0

, как мы можем найти/заменить одну строку за другой, но не всю строку в одно и то же время. – sunil

+0

Зачем вам это нужно? Это будет медленно. –

+0

Если я поместил выше строки в свой скрипт, он заменит сразу все строки 'URL =' grep 'document.getElementById "index.html | awk -F '' '{print $ 7}' ' для var в $ URL do SERVICE_STATUS =' curl -s -head $ URL | head -n 1 | awk '{print $ 2}' ' , если [[$ SERVICE_STATUS -eq" 200 "]] затем ' sed 's/:: UP/:: DOWN /' index.html' fi done' – sunil

0
echo line | sed 's/UP/DOWN/' 

Где строка является строка, которую вы хотите заменить

0

Хотя ответ @ Иоанно-zwinck дает вам решение для этого, если вы хотите иметь более ограниченный шаблон, сделать что-то вроде ниже

sed -E 's/(API[[:blank:]]*[[:alnum:]]+[[:blank:]]*::[[:blank:]]*)UP/\1DOWN/' 
                    filename 

, который даст вам

document.getElementById("p1").innerHTML = "API Dev :: DOWN"; 
document.getElementById("p2").innerHTML = "API QA :: DOWN"; 
document.getElementById("p3").innerHTML = "API Reg :: DOWN"; 
document.getElementById("p4").innerHTML = "API Prod :: DOWN"; 
Смежные вопросы