sonumb

sed에서 개행문자 (newline) 처리하기 본문

카테고리 없음

sed에서 개행문자 (newline) 처리하기

sonumb 2008. 6. 18. 15:54
sed는 말그대로 Stream 'Line' Editor 이다.
즉 하나의 라인만 적용이 된다는 소리. -_-;;
약간의 꼼수를 써야된다.

# 도스파일로 변환한 다음
$unix2dos -n ./tmp.unix ./tmp.dos

그런다음 캐리지 리턴 문자 삭제

# UNIX 파일은
$sed -e "/^$/d" ./tmp.unix >  non-blank.file

# 도스 파일은 첫번째에 carriage return 문자가 나오는 행을 삭제.
$sed -e "/^\r/d" ./tmp.dos >  non-blank.file




# 다음은 2개행을 붙이는 옵션이다.
# 파일 끝에 N;, 즉 다음행을 가져와서. 개행문자를 스페이스문자로 치환한다.
# 라인 마지막의 개행문자는 삭제하지 않는다.

$sed -e '/$/N;s/\n/ /' a.txt




아니면 문서 전체적으로 개행문자를 삭제 해야 할 경우가 있다.
일단 'sc'라는 sed script 파일을 만들어보자.

$cat > sc
:loop
N
{
    s/\n//
    b loop
}
P
D
^D (EOF 문자)


그런 다음

$sed -f sc tmp.unix > no-newline.file


반응형