2017-01-15 1 views
3

내가 X 모든 공간, 명령 작품, 명령 존재 교체 나오지도 사용하지만sed를 사용하여 공백을 (공백)으로 바꾸는 방법?

sed 's/ /X/g' filelist.tmp 

을, 나는 \ 공간과 공간의 모든 항목을 대체하기 위해 동일을 할 때, 코드의 존재 :

sed 's/ /\ /g' filelist.tmp 

작동하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 필자는 쉘 스크립팅을 처음 접했습니다.

답변

7

다른 \ 즉 당신이 \ 리터럴을 만들 필요가 추가

sed 's/ /\\ /g' 

단 하나의 \ 공간 전에 \ 다음과 같은 공간을 탈출한다와; 공간은 이스케이프가 필요한 대체 문자가 아니기 때문에 그대로 사용합니다.

예 :

% sed 's/ /\\ /g' <<<'foo bar spam' 
foo\ \ bar\ \ spam 
+0

시도해보십시오. 변경 사항이 발생하지 않았습니다. 내 코드는'sed 's// \\/g "filelist.tmp'이다. 그것은 작동하지 않았다! –

+1

@SomenathSinha 아니요, 사용했던 것처럼 작은 따옴표를 사용하십시오. 그렇지 않으면 쉘 이탈을 거치게됩니다. Do :'sed 's// \\/g'' – heemayl

+0

그게 효과가있다! 왜 이중 따옴표로 작업하지 않았습니까? –

-1

당신은 "\"-r 인수를 사용해야하며 탈출의 순서로

sed -r "s/\s/\\\s/g" filelist.tmp 

당신은 실수를 가지고 구문을 수정해야합니다 또한.

관련 문제