다음 형식의 데이터 파일이 있습니다.
소스 파일(설명을 위한 예.)
ALBANIA Duck 1000
BELGIUM CHARLEROI Donald Duck 10234
CYPRUS J. Mickey 567
csv
주어진 규칙에 따라 정보를 형식으로 추출하기 위한 Linux 스크립트(Bash, Perl 등)를 찾고 있습니다 .
- 처음in 필드에는
csv
in의 전체 단어만 포함됩니다.수도 - 세 번째 장소필드에는 다음이
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