내가 소유한 파일에 콘텐츠를 쓰려고 합니다 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