중복된 줄 번호 추가

중복된 줄 번호 추가

약 10,000줄의 파일이 있습니다. 첫 번째 열에 행 번호를 추가하고 싶지만 행 번호 1-100을 반복하는 방식으로 합니다. 예를 들어,

1 12313
2 3434
.
.
.
100 4233
1 24523
.
.
.
100 4543543
1
.
.
.     
100

grep이나 awk를 사용하여 이 작업을 어떻게 수행할 수 있나요? 줄 번호를 인쇄했지만 awk를 반복적으로 사용하지는 않았습니다.

awk '{ print NR, $1 }' p2.dat > p3.dat

답변1

%에 모듈로(나머지) 연산자를 사용하십시오 NR. NR % 1001,2,3...99,0,1,2...를 제공하므로 약간의 조정이 필요합니다. 이렇게 해야 합니다:

awk '{ print (NR-1) % 100 + 1, $1 }' p2.dat > p3.dat

물론 이것은 질문에 대한 대답입니다.원래 질문,수정되지 않았습니다.

답변2

이것은 최소한의 루핑으로 작동하는 것 같습니다.

awk '{ printf("%0.0f ",(NR/100.001)+.5) ;print $1 }' p2.dat > p3.dat

데모, 먼저 인쇄10숫자, 그룹접두사 증가:

seq 10 | awk '{ printf("%0.0f ",(NR/3.001)+.5) ;print $1 }'

산출:

1 1
1 2
1 3
2 4
2 5
2 6
3 7
3 8
3 9
4 10

참고: awk반올림은 일부 이진 변환 결함을 보여줍니다. 위의 코드에서는 등의 표현을 사용하는데 (NR/3.001)+.5), 이는 (NR/3)+.5)심지어 (NR*(1/3))+.5). 불행하게도 이것들은 작동하지 않습니다:

# WRONG: (rounding errors), shows four '2's, etc.
seq 10  | awk '{ printf("%0.0f ",(NR/3)+.5) ;print $1 }' 
1 1
1 2
2 3
2 4
2 5
2 6
3 7
3 8
4 9
4 10

관련 정보