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%%:*}
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
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%%:*}
Use o corte em vez disso:
cut -d ':' -f 1
Selecionará tudo antes do primeiro :
.
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