awk를 사용하여 다음 편집 줄에 사용되는 변수를 만드는 방법

awk를 사용하여 다음 편집 줄에 사용되는 변수를 만드는 방법

정보 목록이 포함된 파일이 있습니다. 각 행에는 12개 또는 13개의 필드가 있습니다. 예를 들어, 필드 3과 4가 포함된 파일을 사용하겠습니다.

e.g. myfile.txt
user password location date
john passwd1  new_york today
     passwd2  london   yesterday
jeff passwd3  new_york tomorrow

빈칸의 다음 줄에 John의 이름을 복사할 수 있는 방법을 찾고 있습니다.

지금까지 나는 다음과 같은 것을 시도하고 있습니다.

Awk '{{if(NF==4) print $0; name=$1}; if(NF==3) print $name,$0}' ./myfile.txt >> ./my_editedfile.txt.

그러나 시도할 때마다 $1 텍스트가 인쇄되거나 아무것도 인쇄되지 않거나 다음 줄의 첫 번째 필드가 두 번 인쇄됩니다. 즉, 두 번째 행은 아래와 같습니다.

$1 passwd2 london yesterday
passwd2 london yesterday
passwd2 passwd2 london yesterday

누군가 한 줄에 변수를 설정하고 이를 사용하여 다음 줄을 인쇄하는 데 도움을 줄 수 있습니까?

답변1

당신은 가깝습니다. 변수 앞에 쉼표나 $가 필요하지 않습니다. 노력하다:

awk '{if (NF == 4) {print $0; name=$1} else {print name$0}}'

관련 정보