2016-08-05 2 views
1

특정 위치에있는 파일의 단일 문자열을 새로운 문자열로 대체하려고합니다.특정 위치의 파일에서 단일 문자열을 여러 개의 새 문자열로 바꿉니다.

BAD-1 
BAD-2 
BAD-3 

결과 파일한다 : 나는 다음과 같이 위치 3에 BAD 대체 할 그래서 지금

MAD 
DAD 
BAD 
DAB 
BED 

을 :이처럼 보이는 파일에 "BAD"를 검색하고 싶은 말은하자 그 모습 :

내가 나오지도 뭔가 시도
MAD 
DAD 
BAD-1 
BAD-2 
BAD-3 
DAB 
BED 

:

sed "s/old/new/g" 

하지만 한 줄만 변경됩니다. 아이디어가 있으십니까?

감사합니다.

답변

0

이 작동합니다 :

sed 's/^BAD$/BAD-1\nBAD-2\nBAD-3/' file 

MAD 
DAD 
BAD-1 
BAD-2 
BAD-3 
DAB 
BED 

사용 AWK를 범위 제어 :

awk -v n=3 '/^BAD$/{for(i=1; i<=n; i++) print "BAD-" i; next} 1' file 
+0

감사합니다! 그러나이 단계를 단순화하는 방법이 있습니까? 어쩌면 범위가 다른 seq일까요? – JohannGold

+0

그럴 경우 내 업데이트 된 답변 에서처럼 awk를 사용할 수 있습니다. – anubhava

+0

이것이 작동하지 않는 경우 알려주십시오 – anubhava

관련 문제