입력하다:
int foo(int a, void * b, int c);
산출:
int foo(int, void *, int);
일치시킬 패턴으로 ","를 사용하고 싶습니다. "," 패턴이 일치하면 이전 단어(예 a
: b
& ) 를 삭제합니다 c
.
답변1
당신이 사용할 수있는시야(때때로 불린다.길이가 0인 주장) 사용 중인 정규식 엔진이 이를 지원하는 경우(예: Perl 사용) 뒤에 다음이 있는 경우에만 0이 아닌 단어 문자 시퀀스를 일치시키고 제거합니다.,
perl -pe 's/\w+(?=,)//g'
종료 닫는 괄호와 같이 어설션에 다른 문자를 포함하려면 해당 문자를 문자 목록의 일부로 추가할 수 있습니다 )
.int c
[...]
perl -pe 's/\w+(?=[,)])//g'
선행 공백도 제거하려면 다음을 시도하십시오.
perl -pe 's/\s*\w+(?=[,)])//g'
그것들을 합치면 우리는 얻는다.
$ echo 'int foo(int a, void * b, int c);' | perl -pe 's/\s*\w+(?=[,)])//g'
int foo(int, void *, int);
-i
최신 버전의 sed와 마찬가지로 Perl도 명령줄 스위치를 추가하여 파일을 작동하도록 만들 수 있습니다.
답변2
이것이 도움이 될 것입니다:
sed -e 's/[^ ]\+\([,)]\)/\1/g'
이 보기 흉한 공간을 제거하려면:
sed -e 's/ [^ ]\+\([,)]\)/\1/g'