검색하여 마지막 4자로 바꿉니다.

검색하여 마지막 4자로 바꿉니다.

여기에 다음 데이터가 포함된 CSV 파일이 있습니다.

1,2,CC-12345678-20201120,6
1,3,CC-87654321-20201110,5

"CC-" 뒤의 특정 문자열을 마지막 4자리로 바꿔야 합니다.

예상 출력:

1,2,CC-5678-20201120,6
1,3,CC-4321-20201110,5

awk나 sed를 사용하려고 합니다. 감사해요

답변1

그리고sed

sed 's/CC-[^-]*\([^-]\{4\}\)/CC-\1/' file

또는 가독성을 높이려면 확장 정규식을 사용하세요.

sed -E 's/CC-[^-]*([^-]{4})/CC-\1/' file

그러면 s대시가 아닌 마지막 4개 문자와 대시가 아닌 문자의 후속 숫자가 바뀌고 그 뒤에 로 표시한 4개의 문자가 대체됩니다.CC-[^-]*[^-]\{4\}CC-\(\)

답변2

사용sed

$ sed 's/\([^-]*-\)[0-9]\+\([0-9]\{4\}\)/\1\2/' input_file
1,2,CC-5678-20201120,6

1,3,CC-4321-20201110,5

답변3

그리고 awk:

awk -F- -v OFS=- '$1~/,CC$/{$2=substr($2, length($2)-3)}1' file

문자열을 분할한 다음 -첫 번째 필드가 원하는 패턴( )으로 끝나는 경우 ,CC마지막 4자를 가져옵니다 . 모든 줄을 인쇄합니다( 1).

관련 정보