2016-06-16 3 views
1

noob 질문.정규 표현식 - 문자가 아닌 경우 앞에 대체 x

내가 @ 전에 문자 당신은 (^|[^"])이 그룹이

sed -r 's/(^|[^"])@/\1","/g' 

입니다 사용할 수 있습니다 cat foo.csv | sed 's/@/","/g'

+2

'sed의/[^ "] @ /", "/ g 'foo.csv' – sat

+0

'sed -r's/(^ | [^"]) @/\ 1 ","/ g 'foo.csv' 또한 시작 부분에'@'를 매치시킵니다. –

+0

질문에 대한 나의 이해에서, 나는 이것으로 생각해 낸다 :'sed 's/\ (^ \ | [^ "] \) @/\ 1", "/ g" – Kent

답변

2

이 명령을 증가하기 위해

없는 경우 ”,”에 의해 모든 @을 대체하고 싶습니다 행의 시작 또는 " 이외의 문자와 일치합니다. \1은 그룹 1에 대한 역 참조입니다 (빈 문자열 또는 [^"] 대괄호 식과 일치하는 char). -r없이 대체 구문을 보려면

참조 Kent's comment (그들과 같은 특수 정규식 메타 문자를 행동하는 당신이 (처럼 ), |를 특수 문자를 이스케이프해야합니다).

+0

[다음은 IDEONE 데모입니다.] (https://ideone.com/ Uq3qy5). –