두 문자열(이메일+단어) 사이를 쪼개기 [닫기]

두 문자열(이메일+단어) 사이를 쪼개기 [닫기]

이메일이 나타난 후 일부 텍스트가 나타나기 전에 모든 것을 분할하는 방법이 필요합니다.

예시 형식은 다음과 같습니다.

[email protected]:0:3rw3e:weofkew:StackOverflow=
[email protected]:19.2132.1:StackOverflow=

필수 형식은 다음과 같습니다.

[email protected]:StackOverflow= (followded by everything else on the line).

따라서 본질적으로 StackOverflow=이메일이 나타난 후와 나타나기 전에 슬라이싱합니다.

참고: 모든 이메일은 고유하며 문자 그대로의 의미는 아닙니다.[email protected]

답변1

sed -r 's/(@[^:]+:).*(StackOverflow=)/\1\2/' input.txt

설명하다

  • sed -r 's/foo/bar/' input.txt: 확장 정규 표현식과 함께 sed를 사용하여 파일 패턴을 foo, .barinput.txt
  • (@[^:]+:).*(StackOverflow=): @이메일 주소에서 일치하고 그 뒤에 문자가 아닌 :문자( [^:]+)가 1개 이상 나옵니다. 그런 다음 :사용된 첫 번째 캡처 그룹이 모든 것을 캡처합니다 (). 다음은 그룹으로 캡처한 일부 캐릭터 .*입니다 .StackOverflow=()
  • /1/2: 이 표현식을 이메일 주소의 일부(위의 첫 번째 캡처 그룹)로 바꾸고 중간 부분을 건너뛴 다음 두 번째 캡처 그룹을 대체합니다.

@이는 이메일 주소 형식, 줄 수 , StackOverflow=줄당 줄 수 등과 같은 입력 파일의 형식에 대해 많은 가정을 한다는 점에 유의하세요.

관련 정보