Awk: 열을 따라 첫 번째 필드 확장

Awk: 열을 따라 첫 번째 필드 확장

몇 가지 awk 스크립트가 필요한 작업이 있습니다.

파일이 있다고 가정해 보겠습니다.

A,under1
,under2
,under3
,under4
,under5
B,new1
,new2
,new3
C,sm1
,sm2

어떻게 awk를 사용하여 다음과 같이 만들 수 있나요?

A,under1
A,under2
A,under3
A,under4
A,under5
B,new1
B,new2
B,new3
C,sm1
C,sm2

즉, 열을 따라 첫 번째 필드를 확장하고 싶습니다.

답변1

일방 통행:

$ awk -F, '!$1{$1=p;}$1{p=$1;}1' OFS=, file

$1{p=$1;}$1에 값이 있으면 변수 p에 저장합니다.

!$1$1이 비어 있다는 의미입니다. $1이 비어 있으면 $1을 마지막 $1 값을 포함하는 p로 설정합니다.

1각 줄을 인쇄합니다.

답변2

또 다른 해결책:

awk -F, '{$1=$1?P=$1:P;print}' OFS=,

$1이 비어 있지 않은 경우 P$1로 설정합니다. P그렇지 않으면 $1을 이전 값으로 설정합니다.

관련 정보