sed - 이전 문자와 추가 문자가 포함된 4자리 문자열을 찾습니다.

sed - 이전 문자와 추가 문자가 포함된 4자리 문자열을 찾습니다.

sed대용량 csv 파일에서 특정 값을 검색하고 바꿀 수 있는 명령을 작성하려고 합니다 . 연도 등이 포함된 이 열이 있지만 2005 - 2006 2001 - 2003csv 파일에 이러한 내용이 포함된 셀이 많이 포함되는 오류도 있습니다 -2001 -2010 -1998. 내가 하고 싶은 것은 "become" 등과 -같이 문자열 끝의 문자를 이동하는 것입니다. 패턴은 영향을 받는 모든 셀에서 동일하며 모든 값은 문자 + 4자리 연도로 구성됩니다.-20012001--

sed -e "^-[0-9][0-9][0-9][0-9]"

저는 정규식을 처음 접했고 현재 몇 가지 튜토리얼을 따르고 있습니다.

답변1

sed -e "s/^-\([0-9][0-9][0-9][0-9]\)/\1-/" file.csv

\(과 사이의 부분은 \)교체 섹션에서 인용되어 \1"검색어와 일치하는 항목"으로 교체할 수 있습니다.

^csv 파일을 사용하는 경우 열이 실제로 첫 번째 열(행의 시작과 일치)인 경우에만 작동합니다. 열이 다른 곳에 있으면 다음을 사용할 수 있습니다.

sed -e 's/\(,[[:space:]]*\)-\([0-9][0-9][0-9][0-9]\)/\1\2-/' file.csv

대신에. (쉼표(쉼표 뒤에 공백이 올 수 있음)로 시작하는 열을 감지한 다음 교체 시 해당 시작을 다시 사용합니다.)

관련 정보