큰 CSV 파일이 있고 이전에 본 특정 열을 지우고 싶습니다.
그래서 나는 (내 문제를 설명하기 위해) 다음을 가지고 있습니다.
Category | Subcategory
---------+------------
foo | bar
foo | bar
foo | foobar
foo | foobar
그리고 나는 원한다:
Category | Subcategory
---------+------------
foo | bar
|
| foobar
|
전체 CSV가 정렬(사용 sort --strong -k 1,2
)되므로 한 열에 대한 작업을 수행하는 방법만 필요하고 나중에 다른 열에 동일한 방법을 사용할 수 있습니다. 기본적으로: 첫 번째 항목을 제외한 모든 "foo" 항목을 제거합니다.
그것은 비슷하다이 문제, 하지만 전체 행을 삭제하고 싶지 않습니다..
저는 awk를 별로 좋아하지 않아서 어떻게 해야할지 모르겠습니다. 누가 날 도울 수 있죠?
답변1
이것이 고유 필드를 인쇄하는 일반적인 작업이라고 가정합니다.awk
awk -F"[| ]+" -v OFS=" |" '
NR==1 {
for (i=0;i<length($1);i++)
blank=" " blank
}
{
if (($1,$2) in b)
$2=""
else
b[$1,$2]=1
if ($1 in a)
$1=blank
else
a[$1]=1
print
}' large.csv