줄 끝에서 두 개의 점을 제거하십시오.

줄 끝에서 두 개의 점을 제거하십시오.

줄 끝에서 시작하여 두 점 뒤로 돌아가는 모든 텍스트를 제거하려면 정규식을 사용해야 합니다.

gtk2-2.24.22-2.fc20.x86_64

된다

gtk2-2.24.22-2

이것은 텍스트 파일의 출력 rpm -qa이므로 끝 부분을 잘라야 합니다.

답변1

당신은 ~필요정규식? 나는 이것이 약간 저렴한 해결책이라는 것을 알고 있지만 정규 표현식이 모든 것에 대한 해결책은 아닙니다.

예를 들어 Bash 문자열 조작의 경우:

foo="gtk2-2.24.22-2.fc20.x86_64"
echo ${foo%.*.*} # strip the longest match from the last dot

반환합니다 gtk2-2.24.22-2.

다음과 같이 파일에서 이를 호출할 수 있습니다.

foo=$(head -1 file.txt)
echo ${foo%.*.*} > new-file.txt

정규식은 왼쪽에서 오른쪽으로 "탐욕스러운" 방식으로 소비하므로 뒤에서부터가 아니라 처음부터 무언가를 구문 분석하는 데 좋습니다. 가능하지만 간단한 Bash에서 수행할 수 있는 것보다 좀 더 장황해야 합니다.

Bash( )에서 정규식처럼 보이는 것은 .*"실제" 정규식이 아닙니다. 실제 정규식에서 점은 .모든 문자를 나타내며, 이는 *이전 문자(그룹)가 0~n번 반복된다는 의미입니다. 그러나 Bash에서 점은 .실제 점을 의미하며 *모든 문자에 대한 와일드카드입니다.

관련 정보