我有一个如下所示的文本行(“poseidon”后面有一个空格):
/usr/share/geoserver/data_dir/workspaces/poseidon public/odense_kommune/datastore.xml:17:host">a-postgis1.gues.com</entry>
我用它来删除第一个“:”之后的所有内容
filename=$(sed 's/\:.*$//' <<< $myHost)
结果是:
/usr/share/geoserver/data_dir/workspaces/poseidon
public/datastore.xml
它应该是:
/usr/share/geoserver/data_dir/workspaces/poseidon public/datastore.xml
它用新行替换空格
我尝试过几种 SED 选项,但无法找出问题所在。
我这样使用上面的:
filename=$(sed 's/\:.*$//' <<< $myHost)
echo Filnavn : $filename >> filn.txt
答案1
答案2
使用 cut 代替:
cut -d ':' -f 1
将选择第一个之前的所有内容:
。
答案3
你的sed
命令对我有用。
$ 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
如果你不能使用sed
来解决这个问题,你可以尝试cut
或awk
。
切
$ 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