파일의 일부를 다른 부분으로 바꾸는 스크립트를 작성해야 합니다. 저는 수백 개의 파일을 작업하고 있습니다.
여러 텍스트 파일에 추가하고 싶은 명령 목록이 있습니다. 하지만 파일의 시작 부분에는 일반적인 명령이 있습니다.
명령 목록을 내 명령 목록으로 바꾸고 싶습니다. 자세한 내용은 아래에 나와 있습니다.
원본 파일
%apj=E:\Work\Informatin\Regarding work\DND.apj
%mem=4GB
%nprocshared=2
#p oyu opsd qtnv/1-a(x) kglgg=uioewr
Application
0 1
X -3.66480600 0.10278400 -0.00655500
Y -4.11487100 1.45621700 -0.05226200
Z -5.10300200 1.90042600 0.83864800
1 2 1.0 13 1.0 23 1.0
2 3 1.5 4 1.5
3 5 1.5 6 1.0
4 7 1.5 8 1.0
교체하고 싶은 캐릭터
%apj=D:\Store\Data\Diff All\SMC.apj
%mem=800MB
%nprocshared=4
#p udf AMER hbvn/3-b(n) huggh=whea
Use
0 1
X -3.66480600 0.10278400 -0.00655500
Y -4.11487100 1.45621700 -0.05226200
Z -5.10300200 1.90042600 0.83864800
내 명령 목록으로 바꾼 후 빈 줄 뒤에 있는 문자, 즉 다음 줄을 제거하고 공백을 유지하고 싶습니다.
1 2 1.0 13 1.0 23 1.0
2 3 1.5 4 1.5
3 5 1.5 6 1.0
4 7 1.5 8 1.0
답변1
나는 이것이 당신에게 필요한 것이라고 생각합니다 :
sed '1,6d
7c%apj=D:\Store\Data\Diff All\SMC.apj\
%mem=800MB\
%nprocshared=4\
#p udf AMER hbvn/3-b(n) huggh=whea\
\
Use\
/^$/q' filename
한 줄씩 바꾸는 대신 처음 6줄( 1,6d
)이 삭제되고 7번째 줄은 명령으로 삽입된 새 헤더로 교체됩니다 c
. 마지막으로 다음 빈 줄에서 처리가 중지됩니다.
예상되는 출력이 제공되면 -i
파일에서 직접 교체를 수행하는 옵션을 추가하십시오( sed
BSD 버전의 경우 GNU ).