Ten skrypt używa sed do zmiany wszystkich „” na „nowe rzeczy”. Jak można zmienić tylko „” po yyy: używając sed lub cokolwiek innego?
cat >sample.txt <<EOF
xxx:
""
yyy:
""
}
EOF
sed --expression='s/""/"new stuff"/' sample.txt
Ten skrypt używa sed do zmiany wszystkich „” na „nowe rzeczy”. Jak można zmienić tylko „” po yyy: używając sed lub cokolwiek innego?
cat >sample.txt <<EOF
xxx:
""
yyy:
""
}
EOF
sed --expression='s/""/"new stuff"/' sample.txt
Odpowiedzi:
Mogę nie zrozumieć twojego pytania. Jeśli chcesz zastąpić TYLKO wartość po „yyy”, użyj poprzedniej odpowiedzi. Jeśli chcesz zastąpić JAKIEKOLWIEK wartości po „yyy”, spróbuj tego jednowierszowego:
sed --expression='/yyy/,$ s/""/"new stuff"/g' sample.txt
Nie testowałem tego: D ...
Odpowiedź zebrana z O'Reilly - Sed & Awk 2. Dodatek Około strona 152
Napisz skrypt w pliku
/yyy\:$/{
N
s/yyy\:\n\"\"/yyy\:\
\"new stuff\"/
}
Zastosuj to do swoich danych w zwykły sposób
sed -f skrypt sample.txt
Ten skrypt mówi: szukaj yyy :. Po znalezieniu wczytaj kolejną linię do bufora wzorców (brzmi jak Star Trek Transporter). Teraz wykonaj polecenie / w połączonych liniach. Szukamy więc yyy: newline „”. Jeśli znaleziono, zamień na yyy: \ zauważ rzeczywisty ukośnik odwrotny, a następnie „nowe rzeczy”
Powodzenia