내 텍스트 파일에 특정 형식의 문자열이 있습니다. 문자열의 단어 부분을 바꾸고 숫자 식별자를 유지하고 싶습니다. 예를 들어 비슷한 문자열 L2_name1
이 있지만 L12_name6
유사한 식별자를 가진 이름이 많이 있습니다. name1 = JohnMSmith, name6 = JohnMSmithinson.
비슷한 것을 사용하고 싶지만 sed 's/L2_name1/L2_new_name/g' file.csv
정규 표현식을 사용하므로 다음과 같습니다.
sed -E 's/L[0-9]{1,2}_name1/{same leading monicker found in the matching part}_new_name/g' file.csv
답변1
기억하고 싶은 내용을 명령의 일치 부분에 괄호 안에 넣은 다음 \N
숫자 N을 사용하여 기억한 내용을 기억하고 이를 일치 부분의 N번째 괄호 세트로 바꾸면 됩니다.
sed -E 's/(L[0-9]{1,2})_name([0-9]+)/\1_new_name\2/g' file.csv
보다sed 매뉴얼자세한 내용을 확인하세요.
편집: 확장 정규 표현식을 ()[]{}+
지정했기 때문에 다양한 특수 문자를 사용할 수 있다는 점을 지적해야 합니다 . -E
설명서는 다시 완전한 세부 사항을 제공합니다.
답변2
\0
일치하는 문자열을 인용하는 데 사용할 수 있습니다 .
echo "test string this is a test string" | sed -E 's/test string(.+?)test string/\0 success/'
자세한 내용은 정규식에서 주제 캡처 그룹을 찾아보세요.