mb0.h
16진수 숫자가 몇개 있어요
B0000000
B80806B0
B0000000
곧...
아래 cmd를 사용하여 다음 텍스트를 추가했습니다.
sed -i 's/\$/);/' ../mb0.h
sed -i 's/^/PS_Out(TILE_ADDR(0,0)+0x00020000+, /' ../mb0.h
그러면 아래와 같이 텍스트가 생성됩니다.
PS_Out(ADDR(0,0)+0x00020000+, B0000000);
PS_Out(ADDR(0,0)+0x00020000+, B8080050);
PS_Out(ADDR(0,0)+0x00020000+, B0000000);
PS_Out(ADDR(0,0)+0x00020000+, B8080954);
PS_Out(ADDR(0,0)+0x00020000+, B0000000);
PS_Out(ADDR(0,0)+0x00020000+, B80806B0);
PS_Out(ADDR(0,0)+0x00020000+, 00000000);
PS_Out(ADDR(0,0)+0x00020000+, 00000000);
PS_Out(ADDR(0,0)+0x00020000+, B0000000);
곧...
나는 출력을 원한다 -0 , 4, 8 .... 4* (줄 번호 -1)이 굵은 글씨로 아래에 추가됩니다.
PS_Out(주소(0,0)+0x00020000+0,B0000000); PS_Out(주소(0,0)+0x00020000+4, B8080050); PS_Out(주소(0,0)+0x00020000+8,B0000000); PS_Out(주소(0,0)+0x00020000+12, B8080954); PS_Out(주소(0,0)+0x00020000+16,B0000000); PS_Out(주소(0,0)+0x00020000+20,B80806B0); PS_Out(주소(0,0)+0x00020000+스물넷, 00000000); PS_Out(주소(0,0)+0x00020000+28, 00000000); PS_Out(주소(0,0)+0x00020000+32,B0000000);
곧...
입력 파일 텍스트를 생성하기 위해 sed를 사용하고 있지만 sed 자체를 사용하여 패턴 일치 후에 숫자를 삽입할 수 있는지, 아니면 가능하다면 awk 명령을 사용할 수 있는지 잘 모르겠습니다. 해결을 도와주세요 -
답변1
사소한 awk
:
awk '{print "PS_Out(ADDR(0,0)+0x00020000+"(NR-1)*4", "$0");"}' ../mb0.h
sed
GNU 와 같은 내부 편집의 경우 GNU와 함께 1을 사용 하거나 다음으로 전환 -i
할 수 있습니다 (GNU가 복사한 위치 ).-i /usr/share/awk/inplace.awk
awk
perl
sed
-i
perl -i -lne 'print "PS_Out(ADDR(0,0)+0x00020000+", ($.-1)*4, ", $_);"' ../mb0.h
^사용하지 마세요-i inplace
현재 작업 디렉터리(as or)에서 확장 기능을 먼저 gawk
로드 하려고 하면 누군가가 해당 디렉터리에 악성 코드를 심었을 수 있습니다. 시스템과 함께 제공되는 확장 프로그램 의 경로 는 다를 수 있습니다. 출력을 참조하세요.inplace
inplace
inplace.awk
inplace
gawk
gawk 'BEGIN{print ENVIRON["AWKPATH"]}'
답변2
다음 단계를 완료하세요.
i=0
awk -v i="$i" '{print "PS_Out(ADDR(0,0)+0x00020000+"i", "$1");";i=i+4}' file1.txt
산출
PS_Out(ADDR(0,0)+0x00020000+0, B0000000);
PS_Out(ADDR(0,0)+0x00020000+4, B80806B0);
PS_Out(ADDR(0,0)+0x00020000+8, B0000000);