sed를 사용하여 문자열을 일치하는 문자열의 정보로 바꿉니다.

sed를 사용하여 문자열을 일치하는 문자열의 정보로 바꿉니다.

내 텍스트 파일에 특정 형식의 문자열이 있습니다. 문자열의 단어 부분을 바꾸고 숫자 식별자를 유지하고 싶습니다. 예를 들어 비슷한 문자열 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/'

자세한 내용은 정규식에서 주제 캡처 그룹을 찾아보세요.

관련 정보