(MEGOLDVA) sed vagy awk?

Kapok egy találatot a cat paranccsal, és abból csak az idézőjelek közti rész érdekel. Az lesz az új változó értéke. Ezt hogyan tudnám megvalósítani?

$cat valami_fájlból | grep valami_szövegrész
valami_szövegrész="ez_kell"

result="$(cat valami_fájlból | grep valami_szövegrész | sed... )"

A sed az igen távol van tőlem, de szvsz az lenne a jó. Tehát idézőjelek nélkül kellene az eredmény.

echo result - $result
ez kell

Hozzászólások

Ha már grep is van a sed mellett, akkor már awk:


$ echo 'valami_szovegresz="ez_kell"' | awk 'sub(/^valami_szovegresz="/, "") && /"$/'
ez_kell"

Egyébként grep előtt cat futtatása szörnyű román szokás.


sed -n '/valami_szovegresz/s/.*"\(.*\)"/\1/p' valami_file

--
Soli Deo Gloria

Csak kipróbálásra:

echo '"ez kell",ez nem kell,"ez is kell"' | grep -Po '".*?"' | sed s/'"'/''/g

A lényeges rész a `grep`. Fájl esetében:


grep -Po '".*?"' fajlneve | sed s/'"'/''/g

--
Coding for fun. ;)

Zozz megoldása a jó, mert az (ez kell) az bármi lehet, tehát pont arra nem szűrhetek. Az (ez kell) is egy eredmény.
Köszi Zozz.

OFF:
a peldad alapjan nekem ugy tunik, hogy egy konfig fajlbol szeretnel valtozot kinyerni. ha igy van, akkor ez sokkal elegansabb modja:


#!/bin/sh
if [ -e valami_file ]; then  # ellenorizzuk, hogy letezik-e a fajl
    . valami_file            # behuzzuk
fi
echo $valami_szovegresz      # a valtozo a valami_file-ban kapott erteket