파일에 열이 2개 있을 때 열을 추가하는 방법

파일에 열이 2개 있을 때 열을 추가하는 방법

내가 소유한 파일에 콘텐츠를 쓰려고 합니다 awk. 데이터 세트의 예는 다음과 같습니다.

S,CV0110,1235
S,1234
D,CQ120,3245
P,7894

예상되는 결과는 다음과 같습니다. (행의 필드 수가 2개인 경우 빈 필드 추가)

S,CV0110,1235
S,,1234
D,CQ120,3245
P,,7894

이렇게 해봤는데 필드가 2개 있는 행이 아닌 모든 데이터 행에 값이 추가됩니다.

printf 'S,CV010,1235\r\n' | awk 'BEGIN{FS=OFS="fs"}{$n = $n OFS value}1'

답변1

주어진

$ cat file
S,CV0110,1235
S,1234
D,CQ120,3245
P,7894

그 다음에

$ awk -F, 'BEGIN{OFS=FS} NF<3{$1 = $1 OFS} 1' file
S,CV0110,1235
S,,1234
D,CQ120,3245
P,,7894

답변2

sed '/,.*,/!s/,/,,/' file
  • /,.*,/!줄에 쉼표가 두 개 포함되어 있지 않으면
  • s/,/,,/첫 번째 쉼표를 두 개의 쉼표로 바꿉니다.

이는 더 많은 영역으로 일반화될 수 있습니다. 예를 들어 행에 일곱 번째 필드가 누락된 경우 빈 필드를 추가합니다.

sed -E '/,(.*,){5}/!s/,/,,/' file

답변3

각 열의 값은 항상 유사하다고 가정합니다.

줄이 문자 하나와 숫자 4개로 시작하고 줄이 끝나면 쉼표를 추가하세요.

sed '/^[A-Z],[0-9]\{4\}$/s/,/,,/' file

산출:

S,CV0110,1235
S,,1234
D,CQ120,3245
P,,7894

관련 정보