2009-10-24 4 views
18

공백이 포함 된 디렉토리 목록이 있습니다.텍스트 파일의 모든 줄을 인용 부호 ('something')로 둘러 쌉니다.

내 일괄 처리 스크립트가 제대로 작동하는지 확인하려면 그걸 묶어야합니다.

어떻게 각 줄을 '와'(따옴표)로 묶을 수 있습니까?

을 File1 :

/home/user/some type of file with spaces 
/home/user/another type of file with spaces 

있는 File2

사람 :

'/home/user/some type of file with spaces' 
'/home/user/another type of file with spaces' 
+0

문자열에 아포스트로피를 인용해야합니까? –

+0

문자열 바로 옆에 없습니다. 아시다시피, 공간이있는 경로에서 내 스크립트가 실패하지 않습니다. – user191960

답변

28

사용 나오지?

sed -e "s/\(.*\)/'\1'/" 

아래 주석으로 (그들이 할 경우 악몽) 디렉토리 아포스트로피가 포함되어있을 경우 또는 사용 당신은 각각의 시작과 끝 부분에 작은 따옴표를 삽입 sed(1)를 사용할 수있는이 대체

sed -e "s/'/'\\\\''/g;s/\(.*\)/'\1'/" 
+0

명령이 완벽하게 작동했습니다. 분명히 명령 끝에 파일을 추가하는 사람이 파일에이 명령을 사용하면 분명합니다. – user191960

+2

파일 이름에 아포스트로피가 포함되어 있으면 어떻게됩니까? – asveikau

+1

필자는 sed -e/s/'/'\\\\ ''/ g; s/\ (. * \)/'\ 1'/ " – asveikau

4

는 나오지 사용 :

sed -i "s/^.*$/'&'/g" filename 
+0

나를 위해 작동하지 않습니다. 아담 - 특정 파일 이름에 따라 다양한 오류가 발생합니다. 아마도 거기에 -e가 필요합니까? –

+0

분명히 cygwin에 정확히 그걸 들려줬고 괜찮 았어. 그래도 형식을 만들 수있었습니다. –

3

파일에 다음과 같이 입력하십시오 :

sed -i~ -e "s/^/'/;s/$/'/" the_file 
2

매우 간단한 논리로, 따옴표를 앞뒤로 에코하면됩니다.

while read -r line 
do 
    echo "'$line'" 
    # do something 
done < "file" 
+0

sed를 사용하는 모든 응답자와 이전 유권자는 왜 구부러 졌습니까? 질문은 그것을 요구하지 않았다. 이게 효과가 있니? Bash 제어 흐름에 익숙하지 않습니다. –

관련 문제