SED substitui espaço por nova linha

0

Eu tenho uma linha de texto que se parece com isso (há um espaço depois de "poseidon"):

/usr/share/geoserver/data_dir/workspaces/poseidon public/odense_kommune/datastore.xml:17:host">a-postgis1.gues.com</entry>

e eu uso isso para apagar tudo depois do primeiro ":"

filename=$(sed 's/\:.*$//' <<< $myHost)

O resultado é:

/usr/share/geoserver/data_dir/workspaces/poseidon
public/datastore.xml

e deveria ter sido:

/usr/share/geoserver/data_dir/workspaces/poseidon public/datastore.xml

substitui o espaço por uma nova linha

Eu tentei várias opções de SED, mas não consigo descobrir o que está errado.

Eu uso o acima assim:

filename=$(sed 's/\:.*$//' <<< $myHost)
echo Filnavn : $filename >> filn.txt
    
por Julian 23.10.2018 / 16:06

3 respostas

2

Seu comando sed funciona para mim.

Mas não é necessário usar sed , você pode usar a expansão de parâmetros do shell para remover tudo, desde o primeiro : até o final:

filename=${myHost%%:*}
    
por 23.10.2018 / 16:24
0

Use o corte em vez disso:

cut -d ':' -f 1

Selecionará tudo antes do primeiro : .

    
por 23.10.2018 / 16:25
0

Seu comando sed funciona para mim.

$ cat test 
/usr/share/geoserver/data_dir/workspaces/poseidon public/odense_kommune     /datastore.xml:17:host">a-postgis1.gues.com</entry>

SED

$ cat test  | sed 's/\:.*//'
/usr/share/geoserver/data_dir/workspaces/poseidon public/odense_kommune/datastore.xml

Se você não pode usar sed para resolver este problema, você pode tentar cut ou awk .

CUT

$ cat test  | cut -d ':' -f1
/usr/share/geoserver/data_dir/workspaces/poseidon public/odense_kommune/datastore.xml

AWK

$ cat test  | awk -F ':' '{printf $1}'
/usr/share/geoserver/data_dir/workspaces/poseidon public/odense_kommune/datastore.xml
    
por 23.10.2018 / 16:51

Tags