UNIX에서 다른 줄 수 뒤에 빈 줄 삽입

UNIX에서 다른 줄 수 뒤에 빈 줄 삽입

다음 데이터가 포함된 abc.csv 파일이 있다고 가정해 보겠습니다.

abc
def
geh
ijk
lmn
opq
rst

이제 2행과 6행 뒤에 빈 행을 삽입하고 싶습니다.

어떤 명령어를 사용해야 하는지 추천해주세요.

답변1

$ seq 10 | sed '2G;6G'
1
2

3
4
5
6

7
8
9
10

G sed명령은 패턴 공간에 개행 문자와 예약된 공간(아무것도 넣지 않았기 때문에 비어 있음)을 추가합니다. 따라서 이는 일치하는 행 아래에 빈 행을 추가하는 빠른 방법입니다.

다른 대안은 aand s명령입니다:

sed '2a\

6a\
'

또는:

sed '2s/$/\
/
6s/$/\
/'

일부 sed구현에서는 다음도 지원합니다.

sed '2s/$/\n/;6s/$/\n/'

답변2

sed -e '2a\ ' -e '6a\ ' input > output && mv output input

일부 sed(1) 버전에는 "in-place"(이것은 이식 가능하지 않음) 파일에서 작동하거나 moreutils에서 수행하려고 시도하는 옵션이 있지만 두 방법 모두 새 파일에 쓰기를 숨기는 것뿐입니다 -i. 호출 (출력 파일이 동일한 파일 시스템에 있는 경우)spongerename(2)mv

답변3

이것은 작동합니다:

awk 'NR==3||NR==7 {print " "} {print $0}' abc.csv > temporary.csv && mv temporary.csv abc.csv

답변4

Ex 모드에서 Vim을 사용할 수 있습니다:

ex -sc '6pu_|2pu_|x' abc.csv
  1. pu_빈 줄 추가

  2. x저장하고 닫습니다

관련 정보