%
a부터 줄 끝까지 모두 삭제하고 싶습니다 . 사용
cat /tmp/foo.txt | sed 's/%.*$//'
한 가지 예외를 제외하고는 훌륭하게 작동합니다. 무시하고 싶습니다.어느이스케이프 백분율 기호 \%
. 따라서 다음 파일을 다음과 같이 저장하십시오./tmp/foo.txt
abcd %123
xyz \%xyz
xyz \%xyz %123
내가 원하는 출력은
abcd
xyz \%xyz
xyz \%xyz
이를 수행하는 데 적합한 일반적인 예외 처리는 무엇입니까?
답변1
백분율 앞에 있는 문자를 살펴봐야 합니다.
sed 's/\([^\\]\)%.*/\1/'
이전 문자가 백슬래시가 아닌 경우 해당 문자는 유지되고 나머지 문자는 제거됩니다.
%
이 답변은 줄 시작 부분에 발생하지 않는다고 가정합니다 . 그렇다면 우리는 확인해야 합니다
sed 's/\(^\|[^\\]\)%.*/\1/'