2014-11-09 4 views
0

SED가 올바르게 작동하는 데 문제가 있습니다.일부 공간이 sed로 교체되지 않습니다.

입력 파일 : 지금 그것을 구문 분석하는 방법을

$ cat txt 

# nasty comment 
blah blah blah this line is invalid 
; this also isn't right 
foo = 23 # comment here 
blah=76876.8768 -- fubar 
    yoyo=76 
    tab_moo = -45.99 
// comment 
fubar = baz 
#dfgpo=sf 
#### 

:

$ cat txt | sed -r 's/(#|--|;|\/\/).*//' | grep '=' | sed -r 's/[[:blank:]]+//' 
foo= 23 
blah=76876.8768 
yoyo=76 
tab_moo = -45.99 
fubar= baz 

목표는 모든 의견과 모든 인라인 공백을 제거하는 것입니다.

왜 공백이 출력에 남아 있는지 알 수 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

약한 참고 사항, -r은 GNUism입니다. '-E'로 변경하면'sed'의 GNU 및 non-GNU 버전 모두에서 작동합니다 (예 : BSD, Macs 등) –

답변

2

sed에서 s///은 주어진 줄에서 첫 번째 어커런스 만 바꿉니다. 끝 부분에 /g을 추가해야합니다.

sed -r 's/[[:blank:]]+//g' 
+0

우수합니다. 감사. – MightyPork

관련 문제