2013-08-26 2 views
25

"Hello world"와 같이 시작 부분에 공백이있는 행이 있습니다. 이 줄을 파일의 특정 줄에 삽입하고 싶습니다. 예를 에 대한 다음 파일에 "Hello World"를 삽입sed 특정 줄에 공백이있는 행 삽입

hello 
world 

결과 :

hello 
    hello world 
world 

나는이 나오지 스크립트를 사용하고 있습니다 :

sed -i "${line} i ${text}" $file 

문제가 내가 점점 오전입니다 공백이있는 새로운 행 :

hello 
hello world 
world 
예를 들어 2 개 공간을 추가 할 16,

답변

39

당신은 space 문자를 탈출 할 수

sed -i "${line} i \ \ ${text}" $file 

을 또는 당신은 당신의 text 변수의 정의를 수행 할 수 있습니다 .했다

text="\ \ hello world" 
+7

같은 여러 공백을 입력해야합니다. Sed는 나머지 공간을 자동으로 인식합니다. 예 : 'a \ text'는 텍스트 앞에 4 개의 공백을 추가합니다. – haridsv

+0

감사! 그런 우아한 솔루션! – ShahNewazKhan

4
$ a=" some string " 
$ echo -e "hello\nworld" 
hello 
world 
$ echo -e "hello\nworld" | sed "/world/ s/.*/${a}.\n&/" 
hello 
    some string . 
world 

뒤에 오는 whitepsaces가 보존 된 ㄴ다는 것을 설명하기 위하여 위에 대용 암호에서 추가하는. 대신 sed "/world/ s/.*/${a}\n&/"을 사용하십시오.

5

당신은 당신이 첫 번째 공간을 탈출 한 \

sed -i "${line} i \ ${text}" $file