sed
또는 같은 도구를 사용하여 표 형식으로 입력을 인쇄하고 싶습니다 awk
.
입력하다:
Line1
Line2
Line3
Line4
Line5
Line6
Line7
Line8
원하는 출력:
Line1 Line2 Line3 Line4
Line5 Line6 Line7 Line8
답변1
그룹을 구분하는 빈 줄이 없으면 네 줄의 그룹을 인쇄합니다.
$ awk '{a=a (length(a)?OFS:"") $0} NR>1 && NR%4==0{print a; a=""}' file
Line1 Line2 Line3 Line4
Line5 Line6 Line7 Line8
인쇄할 줄 그룹을 구분하는 빈 줄이 있는 경우(예:이전 개정판), 그 다음에:
$ cat file
Line1
Line2
Line3
Line4
Line5
Line6
Line7
Line8
$ awk '{a=a (length(a)?OFS:"") $0} !length($0){print a; a=""} END{print a}' file
Line1 Line2 Line3 Line4
Line5 Line6 Line7 Line8
답변2
선의 길이가 다른 경우
- 지금까지 제안된 답변 중 하나를 시작으로,
- 필요에 따라 열을 탭으로 구분하도록 수정하고(이는 데이터에 탭이 없다고 가정함)
- 파이프를 통한 출력
column -t -s$'\t'
예를 들어(공백 구분 기호가 없다고 가정):
$catfile178492 이것 빠른 갈색 여우 뛰어 넘다 이것 게으른 개. $ 붙여넣기 - - - - < 파일178492 민첩한 갈색여우 저 게으른 개를 뛰어넘으세요. # 기본적으로 붙여넣기는 탭으로 출력 열을 구분합니다. $ 붙여넣기 - - - - < file178492 열 -t -s$'\t' 민첩한 갈색여우 저 게으른 개를 뛰어넘으세요. $ awk '{a=a (a?OFS:"") $0} NR>1 && NR%4==0{print a=""}' file178492 민첩한 갈색여우 저 게으른 개를 뛰어넘으세요. # 지정 -vOFS=$'\t' awk는 출력 필드를 탭으로 구분합니다. $awk-vOFS=$'\t''{a=a(a?OFS:"") $0} NR>1 && NR%4==0{print a=""}' file178492 민첩한 갈색여우 저 게으른 개를 뛰어넘으세요. $ awk -vOFS=$'\t' '{a=a (a?OFS:"") $0} NR>1 && NR%4==0{print a=""}' file178492 |column-t -s$'\t' 민첩한 갈색여우 저 게으른 개를 뛰어넘으세요.
노트:
$'…'
명확하게 표시되고 장치 독립적인 방식으로 명령에 제어 문자를 입력할 수 있는 bash 구문입니다.$'\t'
탭 문자를 지정합니다. bash를 사용하지 않고$'\t'
작동하지 않는다면, Tab또는 Ctrl+ V, 를 입력해 보세요 Tab. (이것이 작동하지 않으면 Ctrl+ I또는 Ctrl+ V, Ctrl+를 시도하십시오 I.)- 열 사이에 더 많은 공간을 원하는 경우. 명령
-o' '
에 추가column
:
$ 붙여넣기 - - - - < file178492 열 -t -s$'\t' -o' ' 민첩한 갈색여우 게으른 개를 뛰어넘으세요.
답변3
나는 당신이 한 줄에 그룹화된 부분을 인쇄하기를 원한다고 생각합니다. 이 기본 awk 스크립트가 그렇게 해야 합니다.
awk 'BEGIN{RS=""}{gsub("\n"," ");print}' test.txt