그래서 SED.sed라는 스크립트가 있습니다. 이 스크립트는 자동차 데이터 데이터 세트를 처리하기 위해 만들어졌습니다. 먼저 스크립트에 필요한 기능을 설명하고 싶습니다. 세 가지를 하고 싶어요
- 연도를 수십년으로 바꿉니다. 세트에는 1970년부터 89년까지의 자동차만 포함되어 있으므로 연도를 적절한 10년으로 대체했습니다. 예 (1972년과 1974년은 1970년대로 대체됨)
- 자동차 제조사와 모델은 큰따옴표 한 쌍으로 표시됩니다. 저는 이를 작은따옴표로 바꾸고 브랜드와 모델을 분리했습니다. 따라서 "Honda civic lx" 및 "audi 500s(디젤)"는 "honda" "civic lx" 및 "audi" "500s(디젤)"가 됩니다.
- 데이터 손실이 있는 경우 일부 데이터 행에 "?"가 포함됩니다. 데이터세트에서 이 행을 삭제하고 싶습니다.
즉, 내 스크립트는 다음과 같습니다
s/"([^" ]+) +([^"]+)"$/'"'\1' '\2'/"
s/7[0-9]( )/70s/g
s/8[0-9]( )/80s/g
/?/d
그런 다음 이 스크립트를 다음과 같이 sed 명령에 전달했습니다.
sed -E -i -f SED.sed auto-mpg.data
이로 인해 다음과 같은 오류가 발생합니다.
sed: file SED.sed line 1: unknown option to `s'
답변1
답을 찾았습니다. "
문제를 정확히 찾아낼 수 있도록 4행에서 오류 메시지를 생성하는 1행 끝에서 를 제거했습니다 . 문제는 ?
기호가 있는 네 번째 줄에서 발생합니다. 앞에 백슬래시를 추가했지만 스크립트가 실행되지 않았습니다.