SEDは空白を新しい行に置き換えます。

SEDは空白を新しい行に置き換えます。

次のテキスト行があります(「ポセイドン」の後にスペースがあります)。

/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

あなたのsed命令は私にとって効果的です。

しかし、必要ありませんsed。使用できます。シェルパラメータ拡張最初から最後まですべてを削除してください:

filename=${myHost%%:*}

答え2

代わりにカットを使用してください。

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試してください。cutawk

切る

$ 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

関連情報