대문자 기반의 데이터 추출 문제

대문자 기반의 데이터 추출 문제

다음 형식의 데이터 파일이 있습니다.

소스 파일(설명을 위한 예.)

ALBANIA Duck 1000
BELGIUM CHARLEROI Donald Duck 10234
CYPRUS J. Mickey 567

csv주어진 규칙에 따라 정보를 형식으로 추출하기 위한 Linux 스크립트(Bash, Perl 등)를 찾고 있습니다 .

  • 처음in 필드에는 csvin의 전체 단어만 포함됩니다.수도
  • 세 번째 장소필드에는 다음이 csv포함됩니다.마지막 입력 필드(숫자)
  • 2위필드에는 다음이 csv포함됩니다.남은중간 부분

따라서 예상되는 출력은 다음과 같아야 합니다.

출력.csv

ALBANIA,Duck,1000
BELGIUM CHARLEROI,Donald Duck,10234
CYPRUS J.,Mickey,567

답변1

가지고 다닐 수 있는:

sed 's/\([^[:lower:]]*\) \(.*\) /\1,\2,/' < source.dat > output.csv

답변2

필요에 따라 직접 하면

sed -r 's/([[:upper:] .]+)\s+(.*)\s+([0-9]+)\s*$/\1,\2,\3/' file

보시다시피 field1은 그대로 유지되므로 스크립트를 단순화할 수 있습니다.

sed -r 's/\s+(\w*[[:lower:]].*)\s+([0-9]+)\s*$/,\1,\2/' file

심지어

sed -r 's/\s+(\w*[[:lower:]].*[^0-9])\s+/,\1,/' file

관련 정보