2013-07-02 7 views
1

는 현재 파일 a.txt이가 있습니다쉘 스크립트를 사용하여 파일에 새 줄을 삽입 나오지

#define ABC 

나는에 a.txt이를 변경하려면 :

#define ABC 
#define DEF 

그리고 시도

sed 's/#define ABC/#define ABC&\n#define DEF/g' a.txt > tmp/test.txt 
mv tmp/test.txt > a.txt 

그러나 대신 이 표시됩니다. 여러 솔루션을 온라인으로 시도했지만 작동하지 않습니다. 내 솔루션에 어떤 문제가 있습니까? 감사!!! 솔라리스 11

+1

http://stackoverflow.com/a 같아야 일하고있어/16246806/632407 – jm666

+0

@ jm666 내 질문에 어떻게 대답했는지 모르겠습니다. 이미 많은 솔루션을 시도했으며 제대로 작동하지 않는다고 말하면서 저를 믿으십시오. 이 하나는 내 사건에 가장 가까웠다 : http://stackoverflow.com/questions/682984/shell-adding-a-new-line-between-a-given-line-of-text 그리고 그것은 나를 위해 일하지 않았다. 나는 # 또는 무엇인가 가지고있다, 나 do not는 모른다. –

+1

줄을 추가하지 않는 이유는 무엇입니까? 'echo '#define DEF'>> a.txt' – potong

답변

3

같은 것을보십시오 :

$ echo '#define ABC' | sed '/ABC$/ a\ 
> #define DEF' 
#define ABC 
#define DEF 

참고 : 10 9/10 s10s_u9wos_14a SPARC

+0

고마워요! 이 작동합니다.나는 본질적으로 내 파일을 편집 할 수있는 당신의 솔루션과 비슷한 것을 만들었습니다 : sed의 # 정의 # ABC \ #define DEF/'a.txt> new.txt' –

+0

@DaoLam You 환영합니다. 그것이 다행했기 때문에. :) –

1

인용 된 링크의 두 번째 예에서 작업

< a.txt sed "/ABC$/a \\ 
#define DEF 
" 

가 a.txt이

#define ABC 

에서 출력을 생성하기위한 솔루션이다

#define ABC 
#define DEF 

또는 위 링크의 다섯 번째 예

< a.txt sed "/ABC$/s/$/\\ 
#define DEF/" 

그래서 READ! GNU 에 대한

+0

설명해 주시겠습니까? 나는 양쪽 방법을 시도하고 그들은 일하지 않았다. a.txt는 동일하게 유지됩니다. –

+0

downvoter가 코드에 무엇이 잘못된지 알려주시겠습니까? 두 예제 모두 원하는 행을 출력에 추가합니다. – jm666

2

코드 :


 
$echo #define ABC|sed 's/.*/&\n#define DEF/' 
#define ABC 
#define DEF 
+0

답변 해 주셔서 감사합니다. 솔라리스에서 sed를 사용하고 있으므로 위 명령을 통해 아무 것도주지 않았습니다. 어떤 아이디어? –

2

아무것도 오라클 솔라리스에서 테스트하지만, 귀하의 '&'은 (는) 문제.

내가 내 유닉스 상자에 시험이

sed 's/#define ABC/#define ABC \n#define DEF/g' a.txt 

#define ABC 
#define DEF 

시도하고 그것을 잘은

그래서 최종 솔루션이

sed 's/#define ABC/#define ABC \n#define DEF/g' a.txt 
a.txt > tmp/test.txt 
mv tmp/test.txt > a.txt 
+0

고맙습니다. 전에도 같은 것을 시도했지만 작동하지 않았습니다. 결국, 솔라리스에서 bash를 사용했기 때문이라고 생각했습니다. 분명히, 위의 코드는 Linux에서는 bash이지만 Solaris에서는 작동하지 않습니다. 추가 할 sed \ a와 동일합니다. 고맙겠지 만, 제가 리눅스에 있다면 당신의 솔루션이 잘 작동 할 것입니다. –

관련 문제