N개의 연속된 줄로 구성된 각 그룹을 탭으로 구분하여 어떻게 한 줄로 접을 수 있습니까? [복사]

N개의 연속된 줄로 구성된 각 그룹을 탭으로 구분하여 어떻게 한 줄로 접을 수 있습니까? [복사]

경쟁 문제를 해결하려고 하는데 다음 시나리오에 갇혔습니다. 누구든지 결과를 얻는 방법을 이해하도록 도와줄 수 있습니까?

설명하다:세 개의 연속된 행으로 구성된 각 그룹은 하나의 행으로 접어야 합니다.

[출력은 다음과 같이 공유됩니다.]

파일의 데이터:

Abc 123,
zyxhj pqr
raj
ram:
vilas, 
1234
jkal
yui
gshj

산출:

Abc 123,zyxhj pqr raj
ram:vilas,1234
jkal yui gshj

답변1

사용 xargs:

xargs -d'\n' -n3 <infile

\newline을 구분 기호로 기준 으로 3줄마다 읽고 인쇄합니다.


사용 paste:

paste -d ' ' - - - <infile

공백 구분 기호를 사용하여 데이터를 3개 열에 붙여넣습니다.


사용 awk:

awk '{ printf "%s%s", $0, (NR%3?OFS:ORS) }' infile

각 줄을 printf하고 NR(레코드 수)이 모듈로 3이 아니면 OFS(출력 필드 구분 기호, 기본값은 공백)를 인쇄하고, 그렇지 않으면 ORS(출력 레코드 구분 기호, 기본값은 개행)를 인쇄합니다.

관련 정보