awk 또는 sed를 사용하여 각 줄에 (줄 번호 * 4)를 추가하는 방법은 무엇입니까?

awk 또는 sed를 사용하여 각 줄에 (줄 번호 * 4)를 추가하는 방법은 무엇입니까?

mb0.h16진수 숫자가 몇개 있어요

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

sedGNU 와 같은 내부 편집의 경우 GNU와 함께 1을 사용 하거나 다음으로 전환 -i할 수 있습니다 (GNU가 복사한 위치 ).-i /usr/share/awk/inplace.awkawkperlsed-i

perl -i -lne 'print "PS_Out(ADDR(0,0)+0x00020000+", ($.-1)*4, ", $_);"' ../mb0.h

^사용하지 마세요-i inplace현재 작업 디렉터리(as or)에서 확장 기능을 먼저 gawk로드 하려고 하면 누군가가 해당 디렉터리에 악성 코드를 심었을 수 있습니다. 시스템과 함께 제공되는 확장 프로그램 의 경로 는 다를 수 있습니다. 출력을 참조하세요.inplaceinplaceinplace.awkinplacegawkgawk '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);

관련 정보