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

관련 정보