쉘 스크립트 sed 명령어

dalili의 이미지

sed "/w$/N;s/\n//" a.txt

a.txt 파일 내용
hello w
orld

위의 sed 명령은 마지막이 w로 끝나고 개행문자가 올때 개행문자를 없애는 기능이거든요

그런데 N;s가 이해가 안되서요

N;s가 정확히 무엇을 의미하나요?

cyberbot의 이미지

/w$/N : w로 끝나는 라인의 다음라인

s/\n// : \n을 null로 치환

아마 이런 것 같습니다.

APRIL1024의 이미지

N : 다음 라인을 패턴 스페이스(pattern space)에 append 하는 명령어 입니다.
참고로 n 명령어는 현재 패턴 스페이스의 내용을 출력하고 다음 라인을 패턴 스페이스에 append합니다.

; : 명령어 구분자 입니다.

참고로 2개 이상 명령어를 입력하는 방법은 3가지 입니다.
1. semicolon으로 분리
2. -e 옵션으로 분리

sed -e "/w$/N" -e "s/\n//" a.txt

3. 쉘에서 작은 따음표(single quote)를 이용하여 multi line을 이용하는 방법
sed -e '
/w$/N
s/\n//' a.txt