다음과 같은 텍스트 줄이 있습니다("포세이돈" 뒤에 공백이 있음).
/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
사용해 보십시오 .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