CSV 파일에 특정 열이 있는 경우 해당 열을 제거합니다.

CSV 파일에 특정 열이 있는 경우 해당 열을 제거합니다.

약 25개의 열이 포함된 CSV 파일이 있습니다. 파일에는 26개의 열이 포함된 행이 있으므로 해당 추가 열이 포함된 행을 검색하고 제거하여 전체 파일에서 awk를 사용할 수 있도록 하고 싶습니다.

필드는 다음 구분 기호로 구분됩니다.;세미콜론. 추가 열의 형식은 다음과 같습니다.VARNAME="여기에 텍스트를 입력하세요""text is here" 값은 임의의 텍스트입니다.

삭제에 성공했어요변수 이름모든 행에서 임의의 값(인용 텍스트)과 일치하는 패턴을 탐색할 수 없습니다.

내 목표는 추가 열(VARNAME="여기에 텍스트를 입력하세요") 삭제하세요.

예:

현재 파일:

ROW1: VAR1:"Value 1";VAR2="Value 2";VAR3="Value 3"
ROW2: VAR1:"Value 4";VAR2="Value 5";VAREXT="Different Values";VAR3="Value 6"

대상 파일은 다음과 같아야 합니다.

ROW1: VAR1:"Value 1";VAR2="Value 2";VAR3="Value 3"
ROW2: VAR1:"Value 4";VAR2="Value 5";VAR3="Value 6"

답변1

다음과 같은 것을 사용할 수 있습니다.

sed 's/;VAREXT.[^;]*//' file  #combine with -i for in-place editing

시험:

a=$'"ROW2: VAR1:"Value 4";VAR2="Value 5";VAREXT="Different Values";VAR3="Value 6"'
b=$'"ROW2: VAR1:"Value 4";VAR2="Value 5";VAREXT="1234567";VAR3="Value 6"'
c=$'"ROW2: VAR1:"Value 4";VAR2="Value 5";VAREXT="VAREXT";VAR3="Value 6"'

echo "$a" |sed 's/;VAREXT.[^;]*//'
echo "$b" |sed 's/;VAREXT.[^;]*//'
echo "$c" |sed 's/;VAREXT.[^;]*//'

"ROW2: VAR1:"Value 4";VAR2="Value 5";VAR3="Value 6"
"ROW2: VAR1:"Value 4";VAR2="Value 5";VAR3="Value 6"
"ROW2: VAR1:"Value 4";VAR2="Value 5";VAR3="Value 6"

답변2

CSV에 헤더가 없고 세미콜론 뒤에 공백이 없으며 VAREXT...한 줄에 하나만 있을 것으로 예상한 다음 예제에 대해 다음을 시도하십시오.

sed 's/;VAREXT=\"[A-Za-z0-9 ]*\"//' in.csv

의 가치는 어디에 있습니까?주파수 변환문자, 숫자, 공백을 조합하여 사용할 수 있습니다.

관련 정보