![다른 열의 데이터를 기반으로 열 조작을 위한 awk/sed 필터의 예](https://linux55.com/image/202445/%EB%8B%A4%EB%A5%B8%20%EC%97%B4%EC%9D%98%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC%20%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C%20%EC%97%B4%20%EC%A1%B0%EC%9E%91%EC%9D%84%20%EC%9C%84%ED%95%9C%20awk%2Fsed%20%ED%95%84%ED%84%B0%EC%9D%98%20%EC%98%88.png)
열 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