내 sed 명령은
sed '/(.*:)/d' <<< 'abcd:bcde:cdeaf'
돌아와야합니다
bcde:cdeaf
(즉) 줄에서 첫 번째 콜론 앞의 모든 문자와 콜론 자체를 제거해야합니다.
그러나 이것은 아무것도 제거하지 않습니다.
나의 혼란은 주로
1) sed 정규식 내에서 패턴 일치에 대한 parens를 이스케이프해야합니까?
2) 두 경우 모두 (탈출 / 비 탈출) 작동하지 않습니다. 나는 시도했다
sed -E '/\\(.*:\\)/d' <<< 'abcd:bcde'
그것은 해결 ... 감사합니다, 남자 ... 이것은 sed 내부 정규식 패턴 일치를 배우기 위해 찍은 예제입니다 ... 그래서, 나는 parens와 그룹 / 패턴 일치를 사용하는 답변을 찾고 있습니다 ...
또는, 단지 bash는 사용 :
—
jasonwryan
printf "%s\n" "${line#*:}"
...
@ jasonwryan-예제 소스를 고려하여 좋은 지적. 그것을 처리하는 더 효율적인 방법입니다. 그것은 그러나 만약
—
mikeserv
while read line
를 얻을 것을 $line
, 아마 sed
선호한다.
sed 's/[^:]*://'
. 그리고 당신은d
입력 줄을 올리지 않고 ,s///
ubstitution 명령 으로 입력 줄을 수정합니다 . 첫 번째 콜론 비트가 아닌 콜론 비트와 그 뒤에 오는 콜론을 대체해야합니다.