문제

나는 Liux에서 큰 텍스트 파일, 약 400.000 라인 80 charachters를 가지고 있습니다.

파일을 "전개"해야하며, 4 개의 줄을 하나의 줄로 합병하여 라인의 1/4, 각 줄 80*4 숯불 길이가 있습니다.

제안이 있습니까?

도움이 되었습니까?

해결책

awk로 그것을하는 더 쉬운 방법은 다음과 같습니다.

awk '{ printf $0 } (NR % 4 == 0) { print }' filename

후행 신형으로 끝나는 것을 막기를 원한다면 조금 더 복잡해집니다.

awk '{ printf $0 } (NR % 4 == 0) { print } END { if (NR % 4 != 0) print }' filename

다른 팁

perl -pe 'chomp if (++$i % 4);'

귀하의 질문을 올바르게 이해했으면합니다. 이와 같은 입력 라인이 있습니다 (라인이 더 길어진 경우) :

abcdef
ghijkl
mnopqr
stuvwx
yz0123
456789
ABCDEF

다음과 같은 출력을 원합니다.

abcdefghijklmnopqrstuvwx
yz0123456789ABCDEF

다음 AWK 프로그램이 수행해야합니다.

{ line = line $0 }
(NR % 4) == 0 { print line; line = "" }
END { if (line != "") print line }

다음과 같이 실행하십시오.

awk -f merge.awk data.txt
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top