다음과 같은 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