아까 봤던 빈 기둥

아까 봤던 빈 기둥

큰 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

관련 정보