3개의 파이프(|||)로 구분된 파일이 있습니다. 예를 들어 이름|||웹사이트|||날짜|||금액|||
저는 두 가지 일을 하려고 합니다.
다른 파일에서 특정 열을 추출합니다. 예를 들어 새 파일에서 분리할 숫자(파일의 4번째 열입니다)
3개의 파이프를 모두 쉼표로 바꾸면 새 파일이 다음과 같이 표시됩니다. - 이름, URL, 날짜, 금액,
내 데이터에도 쉼표 사이에 단일 파이프 문자가 있으므로 쉼표를 3개의 파이프로 바꾸고 싶습니다.
나는 시도했습니다 - awk -F '[\|]'+ '{print $4}' temp.csv > temp1.csv. 하지만 이는 데이터에 단일 파이프라인이 존재하는지 여부를 추출합니다.
미리 감사드립니다.
답변1
[|]{3}
원시 데이터에서 특정 필드를 추출하려면 필드 구분자 로 사용합니다 .
$ awk -F '[|]{3}' '{ print $4 }' input.csv
GNU는 정규식을 필드 구분 기호로 사용해야 합니다 awk
.
모든 것을 쉼표로 바꾸려면 다음을 수행하십시오 |||
.
$ sed 's/|||/,/g' input.csv >output.csv
답변2
이렇게 하면 삼중 파이프로 구분된 데이터의 네 번째 필드를 추출하는 문제가 해결됩니다.
sed 's/|||/,/g' /path/to/input | awk -F, '{print $4}'