
약 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
가치가 있는 곳바렉스문자, 숫자, 공백의 조합일 수 있습니다.