sed로 주석문 지우는 문제...

mathman의 이미지

sed -e "s/ #.*$//g; s/^#.*$//g; s/#.*$//" $1 > $1.out

위 스크립트를 이용해서 파일 내에있는 주석문을 모두 삭제 하려고 하는데요.

#comment
blahblahblahblah#blahblahblahblaht
blahblahblahblahblah\#blahblahlblahblahblah
blahblahblahblahblah"#"blahblahblahblahblah
blahblahblahblahblah'#'blahblahblahblahblah
blahblahblahblahblah"'"#'blahblahblah
blahblahblah #comment

내용을

blahblahblahblah#blahblahblahblaht
blahblahblahblahblah\#blahblahlblahblahblah
blahblahblahblahblah"#"blahblahblahblahblah
blahblahblahblahblah'#'blahblahblahblahblah
blahblahblahblahblah"'"#'blahblahblah
blahblahblah

이렇게 지우는데 까진 성공 했습니다. 하지만 지워지지 않은 첫번째 줄에 주석문이 또 있는데

\나 " " ' ' 사이에 있는 #blah... 를 제외하고 저 첫번째 줄에 있는 주석만 지우려면

어떤 조건문들을 사용해야 할까요?

답변 부탁드립니다.

doodoo의 이미지

gwanack@kma-gwanack:~$ cat t
#comment
aablahblahblahblah#ccblahblahblahblaht
bbblahblahblahblahblah\#ccblahblahlblahblahblah
ccblahblahblahblahblah"#"ccblahblahblahblahblah
ddblahblahblahblahblah'#'ccblahblahblahblahblah
eeblahblahblahblahblah"'"#'ccblahblahblah
ffblahblahblah #comment
gwanack@kma-gwanack:~$
gwanack@kma-gwanack:~$ sed -n "/[\"]#[\"]/ba;/[']#[']/ba;/[\]#/ba;s/#.*//;ba;:a;p;" t
 
aablahblahblahblah
bbblahblahblahblahblah\#ccblahblahlblahblahblah
ccblahblahblahblahblah"#"ccblahblahblahblahblah
ddblahblahblahblahblah'#'ccblahblahblahblahblah
eeblahblahblahblahblah"'"
ffblahblahblah
gwanack@kma-gwanack:~$

맞나요?

kasi의 이미지

bash로 줄단위로 읽어서 코멘트를 지우면 안되나요??