내 코드 파일에는 몇 줄이 있고 다음 텍스트를 도움을 받아 바꾸고 싶습니다 T V= X T(A);
. 이 찾기 및 바꾸기 패턴을 얻었고 훌륭하게 작동하지만 문제는 전달할 매개 변수가 없을 때입니다. 예를 들어 교체 후 (추가 쉼표 참조) 누군가가 추가 쉼표를 제거하는 데 도움을 줄 수 있기 때문에 이것을 알고 있습니다. 불행히도 저는 정규식 사용자가 아닙니다.=
X(T,A)
s/X\s+([^\(]*)\(/X(\1,/g;
T
T V= X T();
X(T,)
/X(\1,
isempty가 대신 ()
do라고 말해야 하는 어떤 종류의 조건이 있습니까?X(\1/g
/X(\1,/g
답변1
파일에서 실행하면 다음과 같이 해야 합니다.뒤쪽에첫 번째 교체를 실행한 후 오류가 발생합니다.
sed 's/X(\([^,]*\),)/X(\1)/g'
X(<something-not-a-comma>,)
로 대체될 예정입니다 X(<something-not-a-comma>)
.
한 번에 두 가지 교체를 수행하려면 다음을 수행하십시오.
sed -e 'the first substitution' -e 'the second substitution'
답변2
@Kusalananda 첫 번째 교체 명령에서 -E 옵션 없이 확장 정규식을 사용한 것 같습니다.
sed -e 's/X\s+([^\(]*)\(/X(\1,/g' -e 's/X(\([^,]*\),)/X(\1)/g' ./file
그러나 두 번째 명령은 좋아 보입니다. 확장 정규식으로 모든 것을 만들면 작동합니다.
sed -Ee 's/X\s+([^\(]*)\(/X(\1,/g;s/X\(([^,]*),\)/X(\1)/g' ./file