나는 이 코드를 이해하려고 노력 중입니다.
awk 'NR%2{printf "%s ",$0;next;}1' yourFile
이제 맞춤화해보려고 합니다.
이 error.txt의 내용을 고려하면 다음과 같습니다.
KEY 4048:1736 string
3
KEY 0:1772 string
1
KEY 4192:1349 string
1
KEY 7329:2407 string
2
KEY 0:1774 string
1
그 다음에:
awk 'NR%2{printf NR "%s ", $0; next}1' error.txt
... 반환됩니다:
1KEY 4048:1736 string 3
3KEY 0:1772 string 1
5KEY 4192:1349 string 1
7KEY 7329:2407 string 2
9KEY 0:1774 string 1
짝수 줄 번호를 참조하는 것 같은데 , 그것이 무엇을 참조하는지 NR%2
잘 모르겠습니다 . 그렇지 않은 경우 행 이 반환됩니다.1
1
awk 'NR%2{printf NR "%s ", $0; next}' error.txt
1KEY 4048:1736 string 3KEY 0:1772 string 5KEY 4192:1349 string 7KEY 7329:2407 string 9KEY 0:1774 string
전반적으로 아직 이해가 안 되네요.
지금까지 다음 페이지를 살펴보았습니다.
답변1
그건%
모듈로/나머지 산술 연산자, 두 개 이상의 숫자로 구성된 모듈식 분할을 찾습니다. 여기서는 NR
현재 레코드 번호를 2로 나눈 것을 의미하며 다음과 같이 기록됩니다.조건문, 짝수 레코드의 결과는 0이므로 0은 오류 결과이므로 다음과 같습니다.행동수행되지 않았으며;
마지막으로 1
"항상 참" 조건이라는 관용구가 구현되어 처음 몇 줄의 끝에 짝수 줄 번호를 인쇄합니다( NR%2
결과가 0인 동안 실행). 여기서 이러한 줄 번호는 printf
개행 없이 인쇄됩니다. 바라보다awk 스크립트 끝에 있는 "1"은 무엇을 의미합니까?
답변2
을 찾다많은더 나은 포괄적인 솔루션:
gawk/mawk/nawk '(ORS=ORS?"":"\n")~_'
기본적으로 awk는 ORS
항상 one 을 미리 채우므로 이 방법은 빈 문자열에 대해 ORS를 테스트해야 할 때 시간을 낭비 \n
할 필요 없이 항상 짝수 행이 그 위의 행에 연결되도록 보장합니다 .NR % 2
==========다음은 예전 글입니다=================================
다음과 같은 모든 항목 없이 조건을 내부로 가져올 수 있습니다.
gawk/mawk/nawk '{ printf("%s%c",$0,23^(NR%2)+9) }'
홀수 행에서는 NR%2
1(true)로 평가됩니다.
so 23^1+9 = 32 = ascii space.
짝수 행의 경우 0/false를 얻습니다.
so 23^0+9 = 1+9 = 10 = ascii new line \n