sed(GNU)

sed(GNU)

문서의 4줄마다 새 줄을 추가하고 싶습니다.

예를 들어:

abc
def
ghi
jkl
mno
pqr
stu
vw
xyz

다음과 같아야 합니다:

abc
def
ghi
jkl

mno 
pqr
stu
vw

xyz

답변1

sed(GNU)

sed '0~4G'

man sed는 ~를 다음과 같이 해석합니다.

first ~ step은
첫 번째 줄부터 시작하는 모든 첫 번째 단계와 일치합니다. 예를 들어, "sed -n 1~2p"는 입력 스트림의 모든 홀수 행을 인쇄하고 주소 2~5는 두 번째 행부터 시작하여 매 5번째 행과 일치합니다. 첫 번째 값은 0일 수 있습니다. 이 경우 sed는 step과 동일한 것처럼 작동합니다. (이것은 확장입니다.)

sed (기타)

짧음(100줄은 보기 흉함):

sed 'n;n;n;G'

또는, 새 줄 수를 계산합니다.

sed -e 'p;s/.*//;H;x;/\n\{4\}/{g;p};x;d'

또는 더 많은 이식성을 위해 다음을 작성하십시오(일부 sed 버전에 대한 주석 제거).

sed -e '             # Start a sed script.
         p            # Whatever happens later, print the line.
         s/.*//       # Clean the pattern space.
         H            # Add **one** newline to hold space.
         x            # Get the hold space to examine it, now is empty.
         /\n\{4\}/{   # Test if there are 4 new lines counted.
             g        # Erase the newline count.
             p        # Print an additional new line.
           }          # End the test.
         x            # match the `x` done above.
         d            # don't print anything else. Re-start.
       '              # End sed script.

아마도:

awk '1 ; NR % 4 == 0 {printf"\n"} '

답변2

다음 명령을 시도해 보세요.

awk ' {print;} NR % 4 == 0 { print ""; }'

답변3

 sed -e 'n;n;n;G'

 perl -pe '$. % 4 or s/$/\n/' 

 perl -lpe '$\ = $. % 4 ? "\n"  : "\n\n"' 

출력 레코드 구분 기호를 4줄마다 변경합니다.

관련 정보