Ta bort tecken före och efter.

Permalänk
Medlem

Ta bort tecken före och efter.

Hej!

Sitter och försöker porta mina gamla SuperKaramba widgets till Conky. En av mina widgets hämtar info från en UT2004-server via quakestat. Jag behöver använda mig av växeln -xml (på grund av en bug i quakestat) för att få ut vilken map som för tillfället används.

Mitt kommando:
quakestat -nh -xml -P -R -ut2004s 158.174.122.93:8888 > /home/eazy/.conky/conky_azenis_qstat/file.txt

Min out put blir då:

<?xml version="1.0" encoding="iso-8859-1"?> <qstat> <server type="UT2004S" address="158.174.122.93:8888" status="UP"> <hostname>158.174.122.93:8888</hostname> <name>MsB Resurrect TAM/TDM</name> <gametype>TeamArenaMaster</gametype> <map>DM-Rankin</map> <numplayers>0</numplayers> <maxplayers>10</maxplayers> <ping>9</ping> <retries>0</retries> <rules>

Kör jag:
quakestat -nh -xml -P -R -ut2004s 158.174.122.93:8888 | grep <map>

Får jag förstås:
<map>DM-Rankin</map>

Det som är mellan <map> och </map> förändras. Hur får jag bort <map> </map>?

Allt annan info från servern använder jag awk för att printa ut till min server men just map funkar inte på grund av en bug.

Visa signatur

ASUS ROG STRIX B450-F GAMING - AMD Ryzen 5 3600 3.6 GHz 35MB - Cooler Master - Hyper 212 Black Edition - Corsair 16GB (2x8GB) DDR4 3200Mhz CL16 Vengeance LPX - Kingston A2000 500GB M.2 NVMe - Fractal Design Define C Svart - 2 X Noctua NF-P14s redux-1200 140mm PWM - Corsair RM650X 650W v2 - ASUS GeForce GTX 1060 6GB DUAL OC - Raijintek Morpheus II Heatpipe VGA Cooler - 2 X Noctua NF-P12 120mm PWM - OS Debian 10 Stable

Permalänk
Medlem
Skrivet av Eazy:

Hej!

Sitter och försöker porta mina gamla SuperKaramba widgets till Conky. En av mina widgets hämtar info från en UT2004-server via quakestat. Jag behöver använda mig av växeln -xml (på grund av en bug i quakestat) för att få ut vilken map som för tillfället används.

Mitt kommando:
quakestat -nh -xml -P -R -ut2004s 158.174.122.93:8888 > /home/eazy/.conky/conky_azenis_qstat/file.txt

Min out put blir då:

<?xml version="1.0" encoding="iso-8859-1"?> <qstat> <server type="UT2004S" address="158.174.122.93:8888" status="UP"> <hostname>158.174.122.93:8888</hostname> <name>MsB Resurrect TAM/TDM</name> <gametype>TeamArenaMaster</gametype> <map>DM-Rankin</map> <numplayers>0</numplayers> <maxplayers>10</maxplayers> <ping>9</ping> <retries>0</retries> <rules>

Kör jag:
quakestat -nh -xml -P -R -ut2004s 158.174.122.93:8888 | grep <map>

Får jag förstås:
<map>DM-Rankin</map>

Det som är mellan <map> och </map> förändras. Hur får jag bort <map> </map>?

Allt annan info från servern använder jag awk för att printa ut till min server men just map funkar inte på grund av en bug.

pipa vidare till

sed 's/<\/*map>//g'

Permalänk
Medlem
Skrivet av Xcorp:

pipa vidare till

sed 's/<\/*map>//g'

Perfekt!
Tack så mycket!

Visa signatur

ASUS ROG STRIX B450-F GAMING - AMD Ryzen 5 3600 3.6 GHz 35MB - Cooler Master - Hyper 212 Black Edition - Corsair 16GB (2x8GB) DDR4 3200Mhz CL16 Vengeance LPX - Kingston A2000 500GB M.2 NVMe - Fractal Design Define C Svart - 2 X Noctua NF-P14s redux-1200 140mm PWM - Corsair RM650X 650W v2 - ASUS GeForce GTX 1060 6GB DUAL OC - Raijintek Morpheus II Heatpipe VGA Cooler - 2 X Noctua NF-P12 120mm PWM - OS Debian 10 Stable

Permalänk
Hedersmedlem
Skrivet av Xcorp:

pipa vidare till

sed 's/<\/*map>//g'

Ett litet tips till framtiden: sed klarar av många olika tecken istället för /, så när man har slash med i texten är det lättare med något annat. T ex: sed 's#</*map>##g'

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

Permalänk
Medlem
Skrivet av Thomas:

Ett litet tips till framtiden: sed klarar av många olika tecken istället för /, så när man har slash med i texten är det lättare med något annat. T ex: sed 's#</*map>##g'

Citat:

> echo "<map>DM-Rankin</map>"|sed 's#</*map>##g'
DM-Rankin
> echo "<map>DM-Rankin</map>"|sed 's!</*map>!!g'
DM-Rankin
> echo "<map>DM-Rankin</map>"|sed 's|</*map>||g'
DM-Rankin
> echo "<map>DM-Rankin</map>"|sed 's\</*map>\\g'
DM-Rankin
> echo "<map>DM-Rankin</map>"|sed 's=</*map>==g'
DM-Rankin
> echo "<map>DM-Rankin</map>"|sed 's]</*map>]]g'
DM-Rankin
> echo "<map>DM-Rankin</map>"|sed 's-</*map>--g'
DM-Rankin
> echo "<map>DM-Rankin</map>"|sed 's_</*map>__g'
DM-Rankin
> echo "<map>DM-Rankin</map>"|sed 's"</*map>""g'
DM-Rankin
> echo "<map>DM-Rankin</map>"|sed 'sr</*map>rrg'
DM-Rankin
> echo "<map>DM-Rankin</map>"|sed 's8</*map>88g'
DM-Rankin
> echo "<map>DM-Rankin</map>"|sed 's^</*map>^^g'
DM-Rankin
> echo "<map>DM-Rankin</map>"|sed 's%</*map>%%g'
DM-Rankin
> echo "<map>DM-Rankin</map>"|sed 's`</*map>``g'
DM-Rankin

Rätt logiskt när jag tänker efter men det har jag inte reflekterat över alls. Suffixet g i slutet står för 'global', vilket bör gör så att substitutionen tillämpas på alla förekomster i raden, inte bara den första förutsatt att det inte förekommer i det mönster eller texten man arbetar med förstår jag nu.

Århundradets bästa tips! Tack.