
다음과 같은 CSV 파일이 있습니다.
name_var;type_var;
id;string;
dt_depot;string;
num_artc;string
첫 번째 항목을 삭제 ;
하고 마지막 항목을 대체하여 ,
출력이 다음과 같도록 하고 싶습니다.
name_var type_var,
id string,
dt_depot string,
num_artc string
답변1
간단히 sed
대체하면 다음과 같습니다.
$ sed 's/;$/,/; s/;/ /g' file
name_var type_var,
id string,
dt_depot string,
num_artc string
해결책 에 관해서는 awk
입력 파일에 채워진 열이 2개만 포함되어야 하는 경우 다음 표현식을 사용할 수 있습니다 awk
.
$ awk -F";" '{ if (NF==3) $2=$2","; print $1,$2 }' file
name_var type_var,
id string,
dt_depot string,
num_artc string
답변2
$ awk -F';' '{sub(/;$/,","); $1=$1} 1' file
name_var type_var,
id string,
dt_depot string,
num_artc string
스크립트는 ;
줄 끝의 모든 항목을 변경한 다음 모든 입력 필드 구분 기호( 에서 설정 )가 출력 필드 구분 기호(기본적으로 공백)로 변경되도록 하는 필드 에 값을 할당하여 ,
나머지 모든 항목을 로 변환합니다 . 그런 다음 기본 작업( )을 호출하는 참 조건(1)을 지정하여 현재 줄을 인쇄합니다 .;
,
;
-F';'
print $0
답변3
다음 과 awk
같은 작업을 수행할 수 있습니다.
awk -F\; '{print $1" "$2","}'
마지막 쉼표가 마음에 들지 않으면 다음과 같이 다시 작성할 수 있습니다.
awk -F\; '{ if (NF != 2) print $1" "$2","; else print $1" "$2;}'
답변4
이 명령을 사용하면:
awk '{sub(/;$/,",")sub(/;/," ")}1' file
다음과 같은 결과가 나타납니다.
name_var type_var,
id string,
dt_depot string,
num_artc string