다음 데이터가 포함된 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
명령은 패턴 공간에 개행 문자와 예약된 공간(아무것도 넣지 않았기 때문에 비어 있음)을 추가합니다. 따라서 이는 일치하는 행 아래에 빈 행을 추가하는 빠른 방법입니다.
다른 대안은 a
and 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
. 호출 (출력 파일이 동일한 파일 시스템에 있는 경우)sponge
rename(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
pu_
빈 줄 추가x
저장하고 닫습니다