파일의 텍스트를 조작해야 합니다. )
앞에 쉼표가 있는 각 숫자 뒤에 닫는 괄호를 추가 해야 합니다 . – ,
– 예를 들어,
,4
➜,4)
,15
➜,15)
나는 이것을 하기 위한 올바른 방법을 찾으려고 노력하고 있습니다 sed
. 다음을 시도했는데 1자리 숫자에서는 작동하지만 2자리 숫자로 확장되지 않는 것 같습니다. 따라서 위의 첫 번째 줄은 괜찮지만 두 번째 줄은 그렇지 않습니다.
sudo sed 's/,\([0-9]\)/,\1)/g'파일 이름
그런 다음 다음 두 자리 숫자를 시도했습니다.
sudo sed 's/,\([0-9]([0-9]?\)/,\1)/g'파일 이름
이것은 아무 작업도 수행하지 않습니다. 오류 메시지는 표시되지 않지만 파일은 변경되지 않은 상태로 유지됩니다. 필수 번호와 두 번째 선택 번호를 검색한 다음 대체 텍스트로 이동하는 올바른 방법은 무엇입니까? 아직 이 작업을 완료해야 합니다.
,15
➜,15)
어떤 조언이라도 대단히 감사하겠습니다.
답변1
거의 다 왔습니다. 다음을 시도해 보세요.
sudo sed 's/,\([0-9]\{1,2\}\)/,\1\)/g' filename
귀하의 명령 외에도 \{1,2\}
이전 정규식과 1~2회 일치하는 명령(예: 최소 1회에서 최대 2회)을 추가했습니다.
\([0-9]\{1,2\}\)
설명하다:
[0-9]
0에서 9 사이의 단일 숫자와 일치합니다.{1,2}
이전 정규식과 한 번, 최대 두 번 일치합니다. 따라서 하나의 일치는 필수이고 두 번째 일치는 선택 사항입니다(원하는 대로).()
나중에 참조할 수 있도록 정규식 그룹이 생성됩니다.또한 문자 그대로 처리되지 않도록 모든 확장 정규식 구문 앞에 "\"를 사용한다는 점에 유의하세요.
-r
gnu 와 함께 스위치(확장 정규식)를 사용할 수 있으며sed
, 이 경우 다음과 같이 작성할 수 있습니다.sudo sed -r 's/,([0-9]{1,2})/,\1\)/g' filename
편집하다: 쉼표 뒤의 숫자(적어도 하나 이상)를 일치시키려면 다음을 수행할 수 있습니다.
sudo sed 's/,\([0-9]\{1,\}\)/,\1\)/g' filename
또는 더 간단하게:
sudo sed 's/,\([0-9]\+\)/,\1\)/g' filename