열 2와 5의 데이터가 "null"과 같지 않은 경우 sed 또는 awk를 효율적으로 사용하여 특정 열(예: 열 1)의 csv 데이터를 조작하는 방법에 대한 예를 찾으려고 합니다.
필터링되지 않은 예:
채워지지 않음,비어 있음,데이터,데이터,비어 있음,데이터 무인도,데이터,데이터,데이터,데이터,데이터 무인도,데이터,데이터,데이터,비어 있음,데이터 채워지지 않음,비어 있음,데이터,데이터,비어 있음,데이터 채워지지 않음, 비어 있음, 데이터, 데이터,데이터,데이터
될 것입니다:
채워지지 않음,비어 있음,데이터,데이터,비어 있음,데이터 인구가 밀집된,데이터,데이터,데이터,데이터,데이터 무인도,데이터,데이터,데이터,비어 있음,데이터 채워지지 않음,비어 있음,데이터,데이터,비어 있음,데이터 채워지지 않음, 비어 있음, 데이터, 데이터,데이터,데이터도움을 주셔서 미리 감사드립니다!
답변1
awk 'BEGIN{ FS=OFS="," }
$2!="NULL" && $5!="NULL"{$1="POPULATED"}1' infile.csv
FS는 입력입니다.에프생산하다에스구분 기호 및 OFS산소산출에프생산하다에스구분 기호, 둘 다 쉼표 문자로 설정합니다.시작입력 파일을 처리하기 전에 NING을 수행합니다.
우리는 이 두 열(column#2 $2
및column#5 $5
)이유효하지 않은값) !="NULL"
첫 번째 열 값을 업데이트한 $1="POPULATED"
다음관용구1
마지막으로 모든 변경 사항이 적용된 입력 행이 출력됩니다.
빈 열에 대해 NULL을 의미하는 경우 다음과 같이 빈 문자열과 비교하세요.
awk 'BEGIN{ FS=OFS="," }
$2!="" && $5!=""{$1="POPULATED"}1' infile.csv
답변2
#!/usr/bin/python
k=open('filepath','r')
for i in k:
gsplit=i.strip().split(',')
if (gsplit[1] != "NULL" and gsplit[4] !="NULL"):
jk="POPULATED"
print jk+","+",".join(gsplit[1:])
else:
print i.strip()
산출
UNPOPULATED,NULL,DATA,DATA,NULL,DATA
POPULATED,DATA,DATA,DATA,DATA,DATA
UNPOPULATED,NULL,DATA,DATA,NULL,DATA
UNPOPULATED,NULL,DATA,DATA,NULL,DATA
POPULATED,DATA,DATA,DATA,DATA,DATA